728x90
1. REST API란
- Representational State Transfer의 약어
- HTTP URI를 통해 제어할 자원(Resource)를 명시하고, HTTP Method(GET,POST,PUT,DELETE)를 통해 해당 자원을 제어하는 명령을 내리는 방식의 아키텍처
- 서버는 요청으로 받은 리소스에 대해 순수한 데이터를 전송한다. 데이터처리만 하거나, 처리 후 반환될 데이터가 있다면 JSON이나 XML형식으로 전달한다.
- GET/POST 외에 PUT, DELETE 방식을 사용해 리소스에 대한 CRUD처리를 할 수 있다.
- 가장 큰 단점은 정해진 표준이 없고 암묵적인 표준만 정해져있는 것이다.
- 하이픈(-)은 사용하지만 언더바(_)는 사용하지 않는다.
- 특별한 경우를 제외하고 대문자 사용은 하지 않는다. 대소문자 구분을 하기 때문이다.
- URI 마지막에 슬래시(/)를 사용하지 않는다.
- 슬래시(/)로 계층관계를 나타낸다.
- 확장자가 포함된 파일 이름을 직접 포함시키지 않는다.
- URI는 명사를 사용한다.
2. REST 구성
잘 표현된 HTTP URI로 리소스를 정의하고 HTTP Method로 리소스에 대한 행위를 정의한다. 리소스는 JSON, XML과 같은 여러가지 언어로 표현할 수 있다.
1. 자원(Resource) - URI
2. 행위(Verb) - HTTP Method
3. 표현(Representations)
3. 기존 Service와의 차이점
기존 Service | REST API | |
view | 요청에 대한 처리를 한 후 가공된 데이터를 이용해 특정 플랫폼에 적합한 형태의 view로 만들어서 반환 | data처리만 하거나, 처리 후 반환 될 data가 있다면 json이나 xml형식으로 반환. view에 대해 신경쓸 필요가 없음 |
Create | POST | POST |
Read | GET | GET |
Update | POST | PUT |
Delete | GET | DELETE |
4. REST 관련 Annotation
@RestController | Controller가 REST방식을 처리하기 위한 것임을 명시 |
@ResponseBody | JSP같은 view로 전달되는 것이 아니라 데이터 자체를 전달 |
@PathVariable | URI경로에 있는 값을 파라미터로 추출 |
@CrossOrigin | Ajax 크로스 도메인 문제를 해결. 기본적으로 모든 도메인, 모든 요청방식에 대해 허용하게 됨. 이 어노테이션을 붙이지 않으면 동일한 출처의 Origin만 리소스를 공유할 수 있다. |
@RequestBody | JSON 데이터를 원하는 타입으로 바인딩해서 수신 |
5. 실제 코드
[이 글]에 정리했다.
'기록 > BACKEND' 카테고리의 다른 글
[Spring] 프로젝트 실행 순서 (0) | 2022.05.02 |
---|---|
[SpringBoot] JSP사용하기(sts 3) (0) | 2022.05.01 |
[Spring] REST API(feat.jackson-databind, json) (0) | 2022.04.28 |
[Spring] MyBatis Mapper interface 자동 주입 (0) | 2022.04.27 |
[Spring] MyBatis 설정(feat.Spring) (0) | 2022.04.26 |
댓글