Restful API란?
- REST란? Representational State Transfer의 약자로 자원을 이름으로 구분하여 자원의 상태를 주고 받는 모든것을 의미
- HTTP URI를 통해 자원을 명시하고
- HTTP Method(POST, GET, PUT, DELETE, PATCH)를 통해 해당 자원에 대한 CRUD를 적용하는 것을 의미
- CRUD란? Create(POST), Read(GET), Update(PUT, PATCH), Delete(DELETE)를 일걷는 말로 대부분의 소프트웨어가 가지는 기본 데이터 처리기능을 의미한다.
- REST API란? REST의 원리를 따르는 API들을 의미합니다. 올바르게 설계하기 위해서는 규칙을 지켜야합니다.
- URI는 동사보다 명사를, 대문자보다는 소문자를 사용해야한다.
(http://coding.com/User❌ http://coding.com/Starting❌ | http://coding.com/user⭕) - 마지막에 슬래시를 포함하지 않는다.
(http://coding.com/user/❌ | http://coding.com/user ⭕) - 언더바 대신 하이폰을 사용한다.
(http://coding.com/user_kakao❌ | http://coding.com/user-kakao⭕) - 파일확장자는 URI에 포함하지 않는다.
(http://coding.com/user_img.jpg❌ | http://coding.com/user_img⭕) - 행위를 포함하지 않는다.
(http://coding.com/delete_post/1❌ | http://coding.com/post/1⭕)
- URI는 동사보다 명사를, 대문자보다는 소문자를 사용해야한다.
- RESTful이란? REST의 설계규칙을 올바르게 지킨 시스템을 RESTful하다 말할 수 있으며, 모든 CRUD 기능을 POST로 처리하는 API혹은 URI규칙을 지키지 않은 API는 REST API의 설계 규칙을 올바르게 지키지 못한 시스템은 RESTful하다고 말할 수 없습니다.
따라서 RESTful API란 REST의 설계규칙을 올바르게 지키는 REST API를 제공하는 웹 서비스를 의미합니다.
메소드는 어떤게 있나?
- GET : 자원을 받아올 때 사용한다.
- 자원의 상태를 변경시키지 않아 safe method라고 불리고, 멱등성을 띈다.
- 멱등성 : 동일 API를 여러번 호출해도 동일한 결과를 얻을 수 있는 속성
- 자원의 상태를 변경시키지 않아 safe method라고 불리고, 멱등성을 띈다.
- POST : 새로운 자원을 추가할 때 사용한다.
- 서버의 상태를 변경시켜 비멱등성을 띈다. 응답코드로 201을 받아야 정상적으로 서버에 추가되었음을 확인할 수 있다.
- PUT : 존재하는 자원을 전체적으로 변경할 때 사용한다.
- 자원이 존재하지 않는 경우, API는 자원을 생성할 수 있으며 이 경우 201코드를 받게 된다.
- 자원을 변경한 경우 200또는 204코드를 받게된다.
- PATCH와는 다르게 데이터 전체를 바꾸게된다.
- PATCH : 한 자원의 데이터를 부분적으로 변경할 때 사용한다.
- PUT과 마찬가지로 자원을 변경하지만, 자원의 데이터를 부분적으로 변경할 때 사용한다.
- PATCH의 경우 모든 브라우저, 서버, 앱 어플리케이션 프레임워크에서 지원하는 것은 아니라 확인을 한 후 사용해야 한다.
- DELETE : 자원을 삭제할 때 사용한다.
- 멱등성 성질을 띈다고 할 수 있다. DELETE 메소드를 요청했을 때 자원을 삭제한 후 반복적으로 요청하게되면 404에러코드를 받게 되므로 멱등성의 성질을 띈다고 할 수 있다.
참고자료
https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html
https://aws.amazon.com/ko/what-is/restful-api/
https://velog.io/@ellyheetov/REST-API
'1차 공부 > 기술면접 준비' 카테고리의 다른 글
argument와 parameter의 차이 (0) | 2023.02.22 |
---|---|
Hoisting이란? TDZ란? (0) | 2023.02.22 |
웹페이지가 브라우저에 랜더링되는 과정을 설명해주세요. (0) | 2023.02.21 |
스택, 큐 (0) | 2023.02.13 |
시간복잡도와 공간복잡도 (0) | 2023.02.13 |