API 정의
- 요청(request)과 응답(response)으로 작동된다.
- 사용자와 브라우저의 중간역할이다
RESTful API 정의
- HTTP와 URI 기반으로 자원에 접근할 수 있도록 제공하는 애플리케이션 개발 인터페이스이다.
- REST 특징을 지키면서 API를 제공한다는 의미.
"프론트엔드에서 백엔드 API를 호출할 url을 어떻게 만들것인가?"라고 생각하자.
- REST API'를 제공하는 웹 서비스를 'RESTful' 하다고 할 수 있다.
- RESTful API를 개발하는 가장 큰 이유는
client side를 정형화된 플랫폼이 아닌 모바일, PC, 어플리케이션 등 플랫폼에 제약을 두지 않는 것을 목표로 했기 때문
- Server와 Client의 역할을 분리
REST API정의
[REST(REpresentational State Transfer)]
- '분산 시스템(하나의 시스템으로 보이는 독립된 컴퓨터들의 집합-> 이를 위해 네트워크를 통한 컴퓨터간의 통신이 필요)'을 위한 HTTP 기반 소프트웨어 아키텍쳐
즉, 웹 어플리케이션, 다양한 언어, 모바일 어플리케이션, 다른 서버(HTTP기반) 등 끼리 서로 통신할 수 있도록 통역 역할을 해주는 API
- 웹에 존재하는 모든 자원(resorce, ex.이미지, 동영상, 데이터)에 고유한 URI를 부여하여 자원에대한 주소를 지정하는 방법론, 또는 규칙이다.
REST 구성 3가지
HTTP POST http://myweb/users/
{
"users":{
"name": "merry"
}
}
- 리소스(생성되는)
접근할 대상, 사용자
ex) http://myweb/users 형태의 URI로 표현
- 메서드(생성한다는 행위)
HTTP method - GET(조회), POST(생성), PUT(수정), DELET(삭제)
일반적으로는 GET, POST 방식을 사용하나, REST에서는 PUT, DELET도 사용한다.
ex) HTTP POST
- 메시지(사용자)
ex) JSON 문서를 이용해서 표현됨
REST 특징
- HTTP 프로토콜 기반 -> 웹 표준을 최대한 활용 -> Stateless(클라이언트의 상태를 저장하지 않음)
- 웹이 존재하는 모든 자원에 고유한 URI(통합자원식별자:Uniform Resource Identifier)를 부여해 활용
- '다양한 클라이언트'에게 서비스를 제공하고 클라이언트와 서버 역할의 명확한 분리가 가능
클라이언트는 REST API를 통해 서버와 정보를 주고 받음
- '서비스별 분리, 통합'에 대한 표준화된 방법을 제공
ex) 고객정보서비스|예약서비스|항공편서비스
REST 규칙
- URI는 명사를 사용한다.
- 슬래시로 계층 관계를 표현한다.
- URI의 마지막에는 슬래시를 붙이지 않는다.
- URI는 소문자로만 구성한다.
- 가독성이 떨어지는 경우 하이픈을 사용한다.
REST 규칙에 어긋나는 url예시
[GET] http://127.0.0.1:8000/product/main_page_product
- url은 page 기준이 아닌 resource 기준으로 작성한다.
- 메인 페이지에 표출되어야할 정보가 무엇인지 판별하여 url을 정한다.
- 한번에 여러 종류의 정보를 표출해야 한다면,
프론트엔드 개발자와 협의하여 REST에 맞춰 두가지 이상의 endpoint를 동시에 호출한다.
- 우리 웹 서비스 메인페이지에 여름특가 이벤트 + 사용자의 내 상세정보 등
[GET] http://127.0.0.1:8000/store/find_store
[POST] [http://127.0.0.1:8000/product/**add_first_item_information](http://127.0.0.1:8000/product/add_first_item_information)?name='자켓' &category='의류'**
- 자원을 추가(add)할 때는 ~/post 만으로 충분하다.
[GET] http://127.0.0.1:8000/store?name='강남'
- 검색 기능은 자원의 정보를 호출하는 기능이므로 [GET] method를 사용한다.
- 검색 키워드는 body를 통해 전달하지 않고, query string을 활용한다.