본문 바로가기

개발인생다반사/TIL(Today i learned)

TIL - 211019 - [HTTP/네트워크] 실습

Achivement Goals

  • REST API에 대해 이해할 수 있다.
    • REST API 문서를 읽을 수 있다.
    • REST API에 맞춰 디자인할 수 있다.
    • Open API와 API Key에 대해 이해할 수 있다.
  • Postman이 무엇인지 이해하고 사용할 수 있다.
    • HTTP API 테스팅이 무엇인지 알 수 있다.
    • Postman을 사용하여 서버에 GET, POST 요청을 보내고 응답을 받을 수 있다.
    • (Optional) Postman을 사용하여 Open Weather Map Open API에 요청을 보낼 수 있다.

Chapter 1 - REST API

(1) API의 대표적인 아키텍처 - REST API

Representational State Transfer(로이 필딩), 웹(http)의 장점을 최대한 활용할 수 있는 아키텍처로 소개

 

REST API는 웹에서 사용되는 데이터나 자원(Resource)을 HTTP URI로 표현하고,

HTTP 프로토콜을 통해 요청과 응답을 정의하는 방식

 

HTTP 프로토콜 기반으로 요청과 응답에 따라 리소스를 주고받기 위해서는 알아보기 쉽고 잘 작성된 메뉴판이 필요한데, 이 역할을 API가 수행해야 하므로 서로 잘 알아볼 수 있도록 작성하는 것이 중요

 

REST 성숙도 모델

0단계

 

1단계 : 개별 리소스와의 통신 준수. REST API는 모든 데이터나 자원을 HTTP URI로 표현.

  • 모든 자원은 개별 리소스에 맞는 적절한 엔드 포인트를 사용 - 요청(POST/doctors/허준, POST/slots/123)
  • 요청하고 받은 자원에 대한 정보를 응답으로 전달
  • 동사, HTTP메소드, 특정 행위에 대한 단어 사용은 지양
  • 리소스에 집중해 명사 형태의 단어 작성
  • 응답, 리소스에 대한 정보, 리소스 사용에 대한 성공/실패 여부

 

2단계 : 적합한 CRUD HTTP 메소드 사용에 중점

  • 요청: GET메소드가 body 비어 있기 때문에 query parameter 사용하여 요청 대상 표시(참고 Urclass /Startline 요청 대상)
  • 요청(GET/doctors/허준/slots?date=2022-08-10)
  • 응답(응답 코드 명확히 작성 not 200 OK, 201 Created / Location: slots/123/appointment)

<리소드와 HTTP 메소드>

GET: 서버의 데이터를 변화시키지 않는 요청

POST: 요청마다 새로운 리소스 생성

PUT: 요청마다 같은 리소스 반환(멱등성)/전체수정(교체)

PATCH : 일부수정

 

3단계 : 하이퍼 미디어 컨트롤 원칙 준수

HATEOAS(Hypertext As The Engine Of Application State)

요청: 2단계와 동일

응답: 리소스의 URI를 포함한 링크 요소 삽입. 링크 요소에는 응답을 받은 다음 할 수 있는 다양한 액션위해 하이퍼미디어 컨트롤

(2) Open API와 API Key

API Key : API를 이용하기 위해서는 Key가 필요. 로그인된 이용자에게만 자원에 접근할 수 있는 권한을 Key 형태로 제공.

데이터 요청시 API Key를 같이 전달해야 응답을 받을 수 있음.

Chapter 3- Postman

(1) Postman 사용하는 방법

브라우저는 서버에 HTTP 요청이 가능하지만 GET 요청에 거의 사용.

브라우저 주소창에 URL 입력하면 해당 URL의 root-endpoint로 GET 요청 보냄.

GET이 아닌 다른 메소드를 사용하려면 개발자 도구의 콘솔 창에서 내장 함수 fetch 사용할 수 있음.

그러나 테스트를 위해 매번 코드를 작성하는 것은 번거로운 작업.

대신 HTTP요청을 테스트할 수 있는 다양한 도구 사용

 

HTTP API 테스트 도구

CLI : curl, WUZZ(git)

GUI : Postman, Insomnia

Chapter 4- Message States 요청

root-endpoint(혹은 root-URL) : API로 요청을 서버와 통신할 때, 서버가 요청을 수락하는 시작점

일반적으로 도메인 주소의 루트(/)를 가리킴.

 

path: path(또는 url-path)는 API를 통해 서버와 통신할 때, 서버와 통신할 수 있는 key 역할.

서버에 정의된 문자열에 따라 path가 달라짐. 예를 들어, https://api.github.com/user 에서는 'user'가 path다.