7월30일 금요일 TIL

김병훈·2021년 7월 30일
0

til

목록 보기
53/89

REST(Representational State Transfer) API

  • CSR에서는 몇 가지의 메소드를 이용해 서버와 통신한다.
    • GET
      • 웹 페이지나 데이터를 요청
    • POST
      • 새로운 글이나 데이터를 전송
    • DELETE
      • 저장된 글이나 데이터 삭제

클라이언트의 요청에 따라 서버에서 적절한 응답을 하는 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)를 사용할 수 있다.
    • 예시 /kimdocing/messages?roomname=로비
      parameter 형식 설명 필수포함여부

      roomname 방이름 특정 필수아님
      (string) roomname만조회

Response

  • JSON 형식이다
  • Request 에 따른 Response 예시
[
 {
 	"id": 1,
    "username" : "김코딩",
    "text": "안녕하세요",
    "roomname": "로비",
    "date": "2021-07-28T03:54:21.134"
 },
 // ... 여러 개의 메시지
]

메시지 추가

Request

POST /{githubID}messages

  • githubID가 작성한 메시지를 생성한다.
    • id부분은 , 각 개인의 아이디를 넣어야한다.
      • 메시지는 24시간마다 자동으로 리셋
  • 요청 본문엔 다음을 반드시 포함해야한다.
    • 요청 형식 : JSON
      • MIME 타입: application/json
  • 필수 parameter
    • username
    • text
    • roomname

Response

  • id는 숫자형식, 새로 생성된 메세지의 고유한 ID값이다.
{
	"id": 5
}

메시지 초기화

Request

POST /{githubID}/clear

  • githubID가 작성한 메시지를 초기화
  • 요청 본문은 필요하지않다.

Response

  • 응답은 JSON형식
  • Request에 따른 Response 예시
{
	"message": "message initialized!"
}

REST API 설계시 가장 중요한 두 가지

  • URI는 정보의 자원을 표현한다
  • 자원에 대한 상태 정의는 HTTP method로 표현된다
    • GET
    • POST
    • PUT
    • DELETE

API Key

  • 서버의 문을 여는 열쇠
  • 클라이언트의 요청에 따라 서버에서 응답하는 것은
    • 서버를 운용하는데 비용 발생
    • 따라서 서버 입장에서 아무런 조건 없이 익명의 클라이언트에게 데이터를 제공할 의무도, 이유도 없다.
    • 그래서 로그인 된 이용자에게만 자원에 접근할 수 있는 권한을 API Key의 형태로 제공하고, 데이터를 요청할 때 API Key를 같이 전달해야만 원하는 응답을 받을 수 있다.
profile
블록체인 개발자의 꿈을 위하여

0개의 댓글