REST(Representational State Transfer) API
- CSR에서는 몇 가지의 메소드를 이용해 서버와 통신한다.
클라이언트의 요청에 따라 서버에서 적절한 응답을 하는 API, REST API에 대해 공부해보자.
- REST API는 웹에서 사용되는 모든 자원은 HTTP URI로 표현하고, HTTP Method를 통해 요청과 응답을 정의하는 방식을 말한다.
- REST API를 사용한다는 것은 REST 아키텍처의 제약 조건을 준수한다는 말
API document of Message States Server
Endpoint
http://3.36.72.17:3000
- root-endpoint(or root-URL)
- API로 요청을 서버와 통신할 때, 서버가 요청을 수락하는 시작점을 뜻함
- 일반적으로 root-endpoint는 도메인 주소의 루트(/)를 가리킨다
- 마찬가지로 Message States Server의 URL을 기준으로 파악할 수 있는 root-endpoint는 Message States Server의 가장 마지막 Location인 호스트의 루트이다.
- Path
- path(or url-path)는 API를 통해 서버와 통신할 때, 서버와 통신할 수 있는 key역할을 한다.
- 서버에 정의된 문자열에 따라 path가 달라진다.
https://api.github.com/user
- 'user'가 path이다.
메시지 조회
GET /{githubID}messages
[Request] githubID가 작성한 모든 메시지 조회
- {githubID}는 요청하는 사람의 아이디를 넣어야 한다.
- 이 요청에는 추가적인 파라미터(query parameter)를 사용할 수 있다.
Response
- JSON 형식이다
- Request 에 따른 Response 예시
[
{
"id": 1,
"username" : "김코딩",
"text": "안녕하세요",
"roomname": "로비",
"date": "2021-07-28T03:54:21.134"
},
// ... 여러 개의 메시지
]
메시지 추가
Request
POST /{githubID}messages
- githubID가 작성한 메시지를 생성한다.
- id부분은 , 각 개인의 아이디를 넣어야한다.
- 요청 본문엔 다음을 반드시 포함해야한다.
- 요청 형식 : JSON
- MIME 타입:
application/json
Response
- id는 숫자형식, 새로 생성된 메세지의 고유한 ID값이다.
{
"id": 5
}
메시지 초기화
Request
POST /{githubID}/clear
Response
- 응답은 JSON형식
- Request에 따른 Response 예시
{
"message": "message initialized!"
}
REST API 설계시 가장 중요한 두 가지
- URI는 정보의 자원을 표현한다
- 자원에 대한 상태 정의는 HTTP method로 표현된다
API Key
- 서버의 문을 여는 열쇠
- 클라이언트의 요청에 따라 서버에서 응답하는 것은
- 서버를 운용하는데 비용 발생
- 따라서 서버 입장에서 아무런 조건 없이 익명의 클라이언트에게 데이터를 제공할 의무도, 이유도 없다.
- 그래서 로그인 된 이용자에게만 자원에 접근할 수 있는 권한을 API Key의 형태로 제공하고, 데이터를 요청할 때 API Key를 같이 전달해야만 원하는 응답을 받을 수 있다.