Open API
- 개방형 API
- 프로그래밍에서 사용할 수 있는 개방되어 있는 상태의 인터페이스
- 다음, 네이버, 통계청, 기상청 등에서도 데이터를 외부 응용 프로그램에서 사용할 수 있도록 Open API를 제공하고 있다.
- 대부분은 API는 REST 방식으로 지원되고 있다.
REST API란??
- HTTP와 URI 기반으로 자원에 접근할 수 있도록 제공하는 애플리케이션 개발 인터페이스
- HTTP URI + HTTP Method
- HTTP URI를 통해 제어할 자원(Resource)을 명시하고, HTTP Method(GET, POST, PUT, DELETE)를 통해 해당 자원을 제어하는 명령을 내리는 방식의 아키텍쳐
- HTTP 프로토콜에 정의된 4개의 메서드들이 자원에 대한 CRUD Operation을 정의
- POST : Create(Insert)
- GET : Read(Select)
- PUT : Update or Create
- DELETE : Delete
Json
- Client와 Server간의 HTTP 요청,응답에서 Json이 많이 사용되고 있다.
- 경량의 데이터 교환 형식
- 특정 언어에 종속되지 않으며, 대부분의 프로그래밍 언어에서 JSON 포맷의 데이터를 핸들링 할 수 있는 라이브러리 제공
- key - value 구조(value들은 list 형식으로 저장 가능)
- Jackson 라이브러리를 통해 Json과 Java 객체 사이의 변환이 가능하다.
- Maven Repository의 dependency 코드를 이용해 Jackson 라이브러리 사용
RESTful service 개발 예졔
@ResponseBody, @RequestBody 사용
- @ResponseBody : 객체로 반환을 하면 Json으로 바뀌어 Response
- @RequestBody : Json으로 요청 보낸 것을 Java 객체로서 인식할 수 있게 해줌
// 글읽기
@GetMapping("/{articleId}")
@ResponseBody
public Article viewDetail(@PathVariable String articleId) {
Article article = this.bbsService.viewArticleDetail(articleId);
return article;
}
// 글쓰기
@PostMapping("/write")
@ResponseBody
public Article write(@RequestBody Article article) {
Article a = article;
return a;
}
Spring MVC 기반 RESTful 웹 서비스 구현 절차
- RESTful 웹서비스를 처리할 RestfulController 클래스 작성 및 Spring Bean 등록
- 요청을 처리할 메서드에 @RequestMapping, @RequestBody, @ResponseBody 어노테이션 선언
- @RequestBody : HTTP Request Body(요청 몸체)를 Java 객체로 전달받음
- @ReponseBody : Java 객체를 HTTP Reponse Body(응답 몸체)로 전달 가능
- Rest Client Tool(Postman 등)을 사용하여 메서드 테스트
- Ajax 통신을 하여 RESTful 웹서비스를 호출하는 HTML 페이지 작성