RESTful API_Network

miin·2021년 12월 6일
0

Network

목록 보기
2/13
post-thumbnail

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"
    }
}
  1. 리소스(생성되는)
    접근할 대상, 사용자
    ex) http://myweb/users 형태의 URI로 표현
  2. 메서드(생성한다는 행위)
    HTTP method - GET(조회), POST(생성), PUT(수정), DELET(삭제)
    일반적으로는 GET, POST 방식을 사용하나, REST에서는 PUT, DELET도 사용한다.
    ex) HTTP POST
  3. 메시지(사용자)
    ex) JSON 문서를 이용해서 표현됨

REST 특징

  • HTTP 프로토콜 기반 -> 웹 표준을 최대한 활용 -> Stateless(클라이언트의 상태를 저장하지 않음)
  • 웹이 존재하는 모든 자원에 고유한 URI(통합자원식별자:Uniform Resource Identifier)를 부여해 활용
  • '다양한 클라이언트'에게 서비스를 제공하고 클라이언트와 서버 역할의 명확한 분리가 가능
    클라이언트는 REST API를 통해 서버와 정보를 주고 받음
  • '서비스별 분리, 통합'에 대한 표준화된 방법을 제공
    ex) 고객정보서비스|예약서비스|항공편서비스

REST 규칙

  1. URI는 명사를 사용한다.
  2. 슬래시로 계층 관계를 표현한다.
  3. URI의 마지막에는 슬래시를 붙이지 않는다.
  4. URI는 소문자로만 구성한다.
  5. 가독성이 떨어지는 경우 하이픈을 사용한다.

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
  • 동사(find)를 사용하지 않는다.
[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을 활용한다.

0개의 댓글