(Representational State Transfer의 약자) API 대표 아키텍처로,
웹에서 사용하는 데이터나 리소스를 HTTP URL로 표현하고, HTTP 프로토콜을 통해 요청과 응답을 정의하는 방식이다. REST API를 사용한다는 것은 REST 아키텍처의 규칙을 준수한다는 의미이다!
root-endpoint(root-url)
: API로 요청을 서버와 통신할 때, 서버가 요청을 수락하는 시작점을 말한다. 예를 들어, Github API의 root-endpoint는https://api.github.com
이고, 트위터 API의 root-endpoint는https://api.twitter.com
이다. 이렇게 root-endpoint는 도메인 주소의 루트(/
)를 가리킨다.path(url-path)
: API를 통해 서버와 통신할 때, 서버와 통신할 수 있는 key 역할을 한다. 서버에 정의된 문자열에 따라 path가 달라진다. 예를 들어,https://api.github.com/user
에서는user
가path
이다.
- 레오나르드 리차드슨의 REST API: 0 ~ 3단계로 나누었다. 보통 2단계까지만 해도 좋은 API 디자인이라 할 수 있다.
0 단계 - HTTP 사용
1 단계 - 개별 리소스와 통신 준수 : 모든 리소스는 개별 리소스에 맞는엔드포인트
사용 (리소스에 집중한명사형
) & 요청 받은 자원에 대한 정보 (리소스 사용 성공/실패 여부
)를 응답으로 전달
2 단계 - HTTP 메소드 원칙 준수 : HTTP 프로토콜의 MethodGET, POST, PUT, DELETE
원칙 준수
(예.GET
요청 +guery parameter
,POST
응답 +상태 코드(201 Created)
,PUT
: 수정, 'PATCH' : 교체 등)
3 단계 - HATEOAS 원칙 준수 : 응답에 리소스의 URL을 포함한 링크요소 삽입추가적으로 여기에서 확인 -> Basic REST API Design Guidelines
Open API
: 누구에게나 열려있는, 사용 가능한 API이다. 사용은 가능하지만, API마다 정해진 이용 규칙(만료일자, 요청횟수, 가격, 정보 제한 등)을 준수해야 한다.
(예. 공공데이터포털에서 제공하는 공공데이터는Open API
형태로 제공되고 있다. 아래Postman
에서 사용할Open Weather Map
이라는 웹 사이트에서 제공하는 날씨 API 도Open API
이다.)API Key
: 서버의 문을 여는 열쇠로, API를 이용하기 위해 필요하다. 로그인된 이용자에게만 리소스 접근 권한을API Key
형태로 제공한다. 데이터를 요청할 때, 함께 전달해야 응답을 받을 수 있다. (ssh-key와 비슷한 느낌이다.)
yes! 🙌
Postman
은 HTTP API 테스트 도구이다. 매번 URL을 입력하고 요청을 보내는 것이 번거롭기 때문에 이 페이지를 통해 쉽게 요청을 테스트할 수 있다.
yes! 👏
먼저Open Weather Map
에 가입한 후,API Keys
를 받을 수 있다.
예를 들어 서울의 최근 날씨 데이터를 받아와 보자.
메뉴의Current Weather Data
에 있는API Doc
을 누른다.
다음 페이지의By city ID
->API call
에서 요청을 보낼 URI을 알 수 있다.api.openweathermap.org/data/2.5/weather?id={city id}&appid={API key}
여기에 서울의
city id
는1835848
나의API key
에는 아까 받은 키를 입력한다.
그러면 위와 같이 요청에 대한 데이터를 받을 수있다. 위 동작을Postman
에서도 할 수 있다. 아래에서 보이는 것과 같이 요청에 원하는 HTTP 메소드를 선택하고(GET
), URL을 입력하면 아래에Params
에서 자동으로 키와 벨류를 정리해 준다.Send
를 누르면,
위에서 보이는 대로 노란 박스처럼 상태코드Status: 200 OK
를 알 수 있고, 데이터 정보를JSON
의 정리된 형태로 받을 수 있다.지금은 조회(
GET
)만 해 보았기 때문에 테스트 도구의 절실한함(?)은 모르겠지만, 나중에 프로젝트를 할 때POST
를 쓰거나PATCH
,DELETE
를 테스트할 때에는 아주 유용할 것 같다.
c과제는 죽어서 하는 것.. 🥲