OPEN API
- API: Application Programming Interface
- Open API는 프로그래밍에서 사용할 수 있는 개방되어 있는 상태의 인터페이스(약속, 규약)
- Open API와 함께 거론되는 기술이 REST이며, 대부분의 Open API는 REST 방식으로 지원
REST
- Representational State Transfer의 약어로, 하나의 URI는 하나의 고유한 자원을 대표하도록 설계
- URI + (GET / POST / PUT / DELETE)
- 웹의 장점을 최대한 활용할 수 있는 아키텍처로 REST 발표
- Http URI를 통해 제어할 자원을 명시하고, Http Method를 통해 해당 자원을 제어하는 명령을 내리는 방식의 아키텍처
- 자원(Resource) - URI
- 행위(Verb) - Http Method
- 표현(Representations)
- 자원은 JSON, XML과 같은 여러 가지 언어로 표현할 수 있음
- 기존의 전송방식과 달리 순수 데이터를 전송
- 암묵적 표준만 존재
- 하이픈은 사용 가능하지만 언더바는 사용하지 않음
- 특별한 경우를 제외하고 대문자 사용은 하지 않음
- URI 마지막에 슬래시를 사용하지 않음
- 슬래시로 계층 관계 표현
- 확장자가 포함된 파일 이름을 직접 포함시키지 않음
- URI는 명사
기존과의 차이
- 기존 서비스에서는 요청에 대한 처리를 한 후 가공된 데이터를 이용하여 특정 플랫폼에 적합한 형태의 View로 만들어서 반환
- Rest 서비스에서는 데이터의 처리만 한다거나, 처리 후 반환될 데이터가 있다면 JSON이나 XML 형식으로 전달한다. View에 대해서는 신경 쓸 필요가 없다.
관련 Annotation
- @RestController: Controller가 REST 방식을 처리하기 위한 것임을 명시 → View의 이름이 아니라 데이터를 반환하는 메서드를 가지는 컨트롤러
- @ResponseBody: JSP 같은 뷰로 전달되는 것이 아니라 데이터 자체를 전달
- @PathVariable: URL 경로에 있는 값을 파라미터로 추출
- @CrossOrigin: Ajax의 크로스 도메인 문제를 해결. 선언만 할 경우 모든 출처를 허용하고, 명시적으로 표시하면 제한
- @RequestBody: JSON 데이터를 원하는 타입으로 바인딩