Spring/공부
[Spring MVC] Rest API, Web API 알아보기
하루인생
2021. 2. 7. 11:11
Rest API 란? (Representational State Transfer)
브라우저에서 http로 요청을 해서 결과를 받고 화면에 보여졌다.
이러한 특징은 브라우저 뿐만 아니라 다른 클라이언트(javascript, 안드로이드 앱 .. )에 적용시키기 위해서는 특정한 형태의 정보를 제공해줘야 한다. 보통 JSON형태로 받게 된다.
이러한 방법 중 하나로 Rest API가 있다.
Web API 란?
Rest API 아키텍처 스타일을 완벽하게 구현하지 못할 경우 Web API라고 부른다.
일반적인 컨트롤러에서의 메서드는 String타입의 뷰이름을 반환한다.
하지만 Web API와 같이 JSON파일이나 특정한 형태의 데이터를 반환하기 위해서는
컨트롤러에서의 메서드는 객체를 리턴한다.
객체를 반환한다는 의미에서 해당 메서드에 @ResponseBody어노테이션을 붙인다.
또 DispatcherServlet에서는 컨트롤러 메서드를 실행하고 리턴한 객체를 변환한다.
변환할 때 메시지 컨버터(Message Converter)를 실행하게 되는데 JSON형태로 반환받기 위해서 pom.xml에 JSON 관련 라이브러리를 추가해줘야한다.
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.10.2</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.10.2</version>
</dependency>
Web API 간단한 예제
컨트롤러
객체를 반환할 메서드명 위에 @ResponseBody어노테이션을 붙인다. 그리고 객체인 student를 반환한다.
객체를 반환하므로 student.jsp파일과 같이 view를 작성할 필요가 없다.
@ResponseBody
@GetMapping(path = "/jsonexam")
public Student JsonExam(@RequestParam(name = "name",required = true)String name,
@RequestParam(name = "age",required = true)int age) {
Student student = new Student();
student.setName(name);
student.setAge(age);
return student;
}
http://localhost:8080/jdbcexam/jsonexam?name=kim&age=20의 url로 요청을 보낸다.
아래 사진과 같이 입력된 객체를 정상적으로 반환했다.