API 시스템을 구현하기 위한 아키텍처(Graphql, SOAP, GRPC, REST, ...) 중에 가장 널리 사용되는 형식
REST(REpresentational State Transfer)란 웹에 존재하는 모든 자원(resorce, ex. 이미지, 동영상, 데이터)에 고유한 URI를 부여하여 자원에 대한 주소를 지정하는 방법론, 또는 규칙.
장점: self-descriptiveness, RESTful API는 그 자체만으로도 API의 목적이 쉽게 이해된다.단점: 표준규약이 없어, 안티패턴으로 작성되는 경우가 흔하다.안티패턴: 실제 많이 사용되는 패턴이지만 비효율적이거나 비생산적인 패턴해당 사이트의 특정 자원의 위치를 나타내는 유일한 주소
ex) https://finance.naver.com/login
ex) https://finance.naver.com/news
HTTP request가 의도하는 action을 정의한 것
HTTP request에서 server로 보내는 데이터 (body)

URI 정보를 명확하게 표현해야 한다.
GET /user/1(X) GET /users/1(O)resource에 대한 행위를 HTTP Method(GET, POST, PUT, DELETE)로 표현한다.
GET delete/user/1(X) DELETE/users/1(O)GET /user/show/1(X) GET /users/1(O)POST insert/user/2(X) POST /users/2(O)resource 사이에 연관 관계가 있는 경우
: /리소스/고유ID/관계 있는 리소스
ex) GET /users/{user_id}/profile
파일의 경우 payload의 포맷을 나타내기 위한 파일 확장자를 URI에 포함시키지 않는다.
ex) GET user/1/profile-photo.jpg(X)
ex) GET user/1/profile-photo(O)
(이때, payload의 포맷은 headers에 accept를 사용한다.)
URI는 / 구분자를 사용하여 자원의 계층 관계를 나타내는 데 사용한다.
URI 마지막 문자로 /를 포함하지 않는다.
ex) GET users/portfolios/(X)
불가피하게 URI가 길어지는 경우 -을 사용하여 가독성을 높인다.
_는 사용하지 않는다.
URI 경로에는 대문자 사용을 피하도록 규정하고 있다.




PUT, PATCH: 특정 데이터 수정
?key=value




GET method를 사용한다.데이터를 조건으로 거르거나(filtering), 특정 방식으로 정렬하거나(sorting), 검색(searching)하고자 하는 경우에 활용된다.

500은 서버 문제지만 프론트엔드에서 key를 잘못 전달했을 때 발생할 수도 있으니 같이 확인해야 한다.