어김 없이 스프링 프로젝트를 진행중이다. 일주일 전 View를 없애고 좀 더 Back에 집중된 api를 설계하는 것으로 초점을 맞췄다.
handler 메서드의 반환 값을 단순히 json 형식으로 보여주면 되는 거 아니냐? 라고 생각을 했지만 검색을 여러번 해보니 정말 확실하게 알기 전까지는 함부로 생각하지 말자라는 결론을 내렸다.. 어렴풋이 배웠던 rest api가 떠올랐고 제대로 공부를 하고 이용을 해서 restful한 api를 만들어야겠다는 생각에 개념정리를 결심하게 되었다. 또 반환 타입으로 ResponseEntity의 사용이 많은데 이 타입을 왜 사용하는지도 한번 알아봐야겠다.
Rest가 정확히 뭘까??
Representational State Transfer -> 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것을 의미
즉 REST란
- HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고,
- HTTP Method(POST, GET, PUT, DELETE)를 통해
- 해당 자원(URI)에 대한 CRUD Operation을 적용하는 것을 의미
REST 구성 요소
- 자원(Resource) : HTTP URI
- 자원에 대한 행위(Verb) : HTTP Method
- 자원에 대한 행위의 내용 (Representations) : HTTP Message Pay Load
REST의 특징
- Server-Client(서버-클라이언트 구조)
- Stateless(무상태)
- Cacheable(캐시 처리 가능)
- Layered System(계층화)
- Uniform Interface(인터페이스 일관성)
REST를 사용하는 이유
- Http 표준 프로토콜에 따르는 모든 플랫폼에서 사용이 가능함
- 범용성을 보장함
- API 메시지를 통해 의도하는 바를 쉽게 파악 가능
- 서버와 클라이언트의 역할을 명확히 분리함!
REST API란?
REST의 원리를 따르는 API
REST의 설계 규칙
- URI는 명사를, 소문자를 사용해야 함.
- 마지막에 / 을 포함하지 않는다. (계층 구조를 나타내기 때문)
- 언더바 대신 하이픈을 사용
- 파일 확장자는 URI에 포함하지 않음
- 행위 자체를 포함하지 않음.
HttpEntity 클래스
Http 요청 또는 응답에 해당하는 HttpHeader와 HttpBody를 포함하는 클래스
ResponseEntity 클래스
HttpEntity 클래스를 상속받아 구현한 클래스는
RequestEntity, ResponseEntity
따라서 ResponseEntity 는 HttpStatus, HttpHeaders, HttpBody를 포함!
참조 : https://devlog-wjdrbs96.tistory.com/182
반응형
'📕 Spring Framework > Spring 개념 정리' 카테고리의 다른 글
WebFlux는 무엇이고, 왜 나왔고, 언제 쓰이는가? (0) | 2022.08.31 |
---|---|
Spring Security [2] - 예외 처리 AuthenticationEntryPoint & AccessDeniedHandler (0) | 2022.08.21 |
Spring Security [1] - JWT를 이용한 REST API 인증과 인가 (0) | 2022.08.18 |
2022.05.17 「@Transactional 옵션 및 성능」 (0) | 2022.05.17 |
2022.05.13 「Session과 Token(Jwt) & 인증과 인가」 (0) | 2022.05.13 |