: API 시스템을 구현하기 위한 아키텍처 중에 가장 널리 사용하는 형식
사전적 정의 : 웹상에서 사용되는 여러 리소스를 HTTP URI로 표현하고 그 리소스에 대한 행위를 HTTP Method로 정의하는 방식.
즉, 리소스(HTTP URI로 정의된)를 어떻게 한다(HTTP Method~)
장점 : selg-descriptiveness(스스로 자명함), RESTful는 그 자체만으로도 API의 목적이 쉽게 이해 된다.
단점 : 표준규약이 없어 안티패턴(실제로 많이 사용되는 패턴이지만 비효율적이거나 비생산적인 패턴)이 작성되는 경우가 흔한다
URI / HTTP Method / Payload : 삼단구성
url 은 page 기준이 아닌 resource 기준으로 작성합니다.
[GET] http://127.0.0.1:8000/product/main_page_product
메인 페이지에 표출되어야할 정보가 무엇인지 판별하여 url을 정합니다.
한 번에 여러 종류의 정보를 표출해야 한다면, 프론트엔드 개발자와 협의하여 REST에 맞춰 두가지 이상의 endpoint를 동시에 호출합니다.
우리 웹 서비스 메인페이지에 여름특가 이벤트 + 사용자의 내 상세 정보
[GET] http://127.0.0.1:8000/store/find_store
동사(find)를 사용하지 않습니다.
[POST][http://127.0.0.1:8000/product/add_first_item_information]
자원을 추가(add)할 때는 ~/post 만으로 충분합니다.
[GET][http://127.0.0.1:8000/store](http://127.0.0.1:8000/store/search_store)?name='강남'
검색 기능은 자원의 정보를 호출하는 기능이므로 [GET] method를 사용합니다.
검색 키워드는 body를 통해 전달하지 않고, query string을 활용합니다.
쿼리 파라미터 혹은 쿼리 스트링에 대해 들어보신 적이 있나요? 웹 페이지의 url 주소를 자세히 보면 종종 ? 가 포함되어 있는 것을 보셨을 것입니다. 이 물음표는 단순한 문자열이 아닙니다. 특정한 기능을 수행하고 있죠. 물음표 뒤에는 늘 key=value 형식의 문자열이 따라옵니다. 이를 Query parameter 라고 부릅니다.
주로 데이터를 조건으로 거르거나(filtering), 특정 방식으로 정렬하거나(sorting), 검색(searching)하고자 하는 경우에 활용됩니다.
쿼리 파라미터와 유사해보이지만 그 역할이 완전히 다른 Path parameter도 있습니다. 해당 리소스에 더 자세한 정보를 얻기 위해 접근할 때 사용합니다.