HTTP & RESTful HTTP API

bery·2020년 8월 5일
0
post-custom-banner

1. HTTP란?

  • HyperText Transfer Protocol
  • HTML 문서를 교환하기 위해 만들어진 통신 규약
  • 프론트앤드와 클라이언트간의 통신, 백앤드와 프론트앤드 서버간의 통신에도 사용된다.

2. Request? Response?

HTTP 통신 방식

  • HTTP는 요청(request)/ 응답(response) 구조로 되어있다.
  • 클라이언트가 HTTP request를 서버에 보내면 서버는 HTTP response를 보내는 구조.
  • 클라이언트와 서버의 모든 통신이 요청과 응답으로 이루어 진다.

HTTP는 Stateless 이다.

  • 여러 요청/응답끼리 연결되어 있지 않다. 각각의 요청/응답은 독립적인 요청/응답 이다.

HTTP Request 구조

  • HTTP request 메시지는 크게 3부분으로 구성된다.
    start line / headers / body

HTTP Response 구조

  • Response도 크게 3부분으로 구성되어 있다.
    Status line / Headers / Body

3. headers와 body의 역할?

Headers

  • 해당 request에 대한 추가 정보를 담고 있는 부분. (request 메세지 body의 총 길이 등)
  • Key:Value 값으로 되어있다. (:사용)
    key:value
  • Header는 크게 3부분으로 구성되어 있다.

Body

  • 해당 reqeust의 실제 메세지/내용.
    Body가 없는 request도 많다.
  • 예를 들어, GET request들은 대부분 body가 없는 경우가 많음.

4. Method란?

GET

  • 이름 그대로 어떠한 데이터를 서버로 부터 받아올때 사용하는 Method.
  • 데이터 생성/수정/삭제 없이 받아오기만 할때 사용
  • 가장 간단하고 많이 사용되는 HTTP Method
  • 언주로 데이터를 받아올때 사용되기 때문에 request에 body를 안 보내는 경우가 많다.

POST

  • 데이터를 생성/수정/삭제 할때 주로 사용되는 Method.
  • 데이터를 생성 및 수정 할때 많이 사용하기 때문에 대부분의 경우 requst body가 포함되서 보내진다.

5. Status-code 들은 무엇이 있을까요?

자주 쓰이는 HTTP Status Code

  • 200 OK
    가장 자주 보게되는 status code.
    문제없이 다 잘 실행 되었을때 보내는 코드.

  • 301 Moved Permanently
    해당 URI가 다른 주소로 바뀌었을때 보내는 코드.

  • 400 Bad Request

  • 401 Unauthorized

  • 403 Forbidden

  • 404 Not Found

  • 500 Interval Server Error

6. RESTful HTTP API는 무엇일까요?

  • 프론트엔드와 백엔드가 소통하는 엔드포인트
  • 리소스의 표현 상태만으로는 서버에서 어떤 일이 발생하는지 알기 어렵다. 때문에, RESTful API에서는 REST 아키텍쳐를 통해 표현된 리소스와 더불어 어떠한 행위인지 명시할 수 있는 HTTP 메소드와 URI를 활용한다.

RESTful API의 세가지 요소

  • REST : 리소스가 어떻게 표현되는지?
    ex) Accept: application/json

  • URI : 어떤 리소스인지?
    ex) /api/users/1

  • HTTP 메소드 : 어떤 행위인지?
    ex) GET

7. 올바른 end-point 주소는 어떻게 작성할까요?

  • URI에는 행위가 표현되면 안된다
    ex) POST /users/2/delete
    가이드라인에 어긋남

  • 권장사항은, URI가 가지는 의미는 철저히 어떤 리소스인지, 그리고 리소스의 계층 구조에 대한 것 뿐이어야 한다.
    ex) DELETE /users/2

RESTful API를 개발할때 유의 할점

  • /(슬래시)는 계층 관계를 나타낼때 사용된다.
  • 예를 들어, https://api.trueshort.com/kospi/stock/005930 이라는 구조는, KOSPI에 속해있는 주식(Stock) 중 삼성전자(005930)을 나타내는 것이다.
  • https://api.shopping.com/books/novel/stephenking 이라는 구조는, 책들 중 소설 그리고 소설 중 Stephen King의 소설을 나타내는 구조이다.
  • URI에 _(underscore)는 주로 포함하지않고 또한 영어 대문자보다 소문자를 쓴다. 그리고 너무 긴 단어는 잘 사용하지 않는다. 이 모든건 가독성을 높이기 위해서다.
  • URI는 명사를 사용한다.
    /books/novel/stephenking 이라고 하지 /books/novel/get-stephenking 이라고 잘 하지 않는다.
    그 이유는 동사는 GET, POST 같은 HTTP Method를 통해 표현하기 때문이다.
post-custom-banner

0개의 댓글