728x90
restful api 를 설명하라
rest 하게 잘 구성된 api 를 의미합니다. rest (Representational State Transfer) 하다는 것은
URI에 자원을 명시하고 HTTP method로 행위를 정의해서 서버로부터 데이터를 받거나 서버측에 데이터를 반영시키도록 하는 걸 명시적으로 잘 구현했다는 것이라고 생각합니다.
REST 규약을 지키는 것은 여러 룰이 있겠으나 가장 와닿는건 아래 세가지입니다.
- HTTP 여야 함
- stateless 해야 함
- 보안, 로드밸런싱 등 서버 내부구조를 클라이언트는 모르게 계층화해야함
HTTP to CRUD
HTTP 메서드를 CRUD (기본으로 데이터 처리를 위해 갖추어야할 4가지 인터페이스 : 위키 발췌) 에 매핑하자면 아래와 같습니다.
- POST : Create
- GET : Read
- PUT,PATCH : Update
- DELETE : Delete
put 과 patch 차이
- put : 존재하는 자원의 전체를 바꿉니다
- patch : 존재하는 자원의 일부만을 바꿉니다 put, patch를 쓰면 꼭 그렇게 되리라는 개념보다는 그렇게 규약을 설정하는 것이 이롭다는 것입니다.
내부 로직은 개발자가 정하기 나름이지만은요.
GET 과 POST 의 차이
- 캐싱 가능 여부
get 은 캐싱 가능하지만 post는 아닙니다 - response body 존재여부
post 만이 body를 갖습니다. get은 uri 에 필요 자원을 명시해야합니다. 따라서 민감데이터는 명시하면 안됩니다.
또한 uri 길이 제한이 있기 때문에 get 또한 요청문의 길이제한이 있다고 봐야합니다. - 멱등성
get 은 언제나 동일한 결과를 보여줘야 합니다. (only read이므로)
참고
https://www.redhat.com/ko/topics/api/what-is-a-rest-api
https://im-developer.tistory.com/166
'프로그래밍 > backend&devOps' 카테고리의 다른 글
[Spring] 어노테이션(annotation) 기반 bean 설정법 (0) | 2021.06.21 |
---|---|
[intelliJ] Google Style guide intelliJ 적용법 (0) | 2021.06.14 |
[OOP] 객체지향 설계 5원칙 : SOLID 디자인 원칙 (0) | 2021.05.25 |
[Spring] J2EE란?, EJB란?, Spring framework 의 탄생 배경 (0) | 2021.05.22 |
[AWS] amazon lambda + API Gateway 로 SNS 메시지 보내기 - 2 (0) | 2021.04.12 |