본문 바로가기
Web/backend

HTTP, RESTful API

by yongmin.Lee 2020. 10. 24.

HTTP

하이퍼텍스트 전송 프로토콜(HTTP)은 HTML과 같은 하이퍼미디어 문서를 전송하기위한 애플리케이션 레이어 프로토콜

클라이언트와 서버가 서로에게 HTTP message를 주고 받으며 통신한다

HTTP는 Stateless : 각각의 요청/응답은 독립적인 요청/응답(만일 여러 요청과응답 의 진행과정이나 데이터가 필요할때는 쿠키나 세션 등등을 사용)

 

HTTP Message

htpp request 예시                                                                                                             http response 예시

 

메시지 타입은 두 가지가 존재

HTTP request : 클라이언트가 서버로 전달해서 서버의 액션이 일어나게끔 하는 메시지

HTTP response : 요청에 대한 서버의 답변

 

HTTP request HTTP response
HTTP Request 구조
1. start line : HTTP request의 첫 라인
2. header
3. body

start line 
형태 : <HTTP Method> <Request target> <HTTP Version>
ex) GET /search HTTP/1.1 

1. HTTP Method
서버가 수행해야 할 동작을 나타냅니다
ex) GET, POST, PUT, DELETE, OPTIONS 등등이 있다

2. Request target
해당 request가 전송되는 목표 uri. ( ex) /login.)

3. HTTP Version
사용되는 HTTP 버젼. 버젼에는 1.0, 1.1, 2.0 등이 있다.


header
해당 request에 대한 추가 정보를 담고 있는 부분
Key:Value 쌍으로 이루어져 있다.

1. Host : 요청이 전송되는 target의 host url
2. User-Agent : 요청을 보내는 클라이언트의 대한 정보
3. Accept : 해당 요청이 받을 수 있는 응답(response) 타입
4. Connection : 해당 요청이 끝난후에 클라이언트와 서버가 계속해서 네트워크 컨넥션을 유지 할것인지 아니면 끊을것인지에 대해 지시하는 부분.
5. Content-Type : 해당 요청이 보내는 메세지 body의 타입. 예를 들어, JSON을 보내면 application/json.
6. Content-Length: 메세지 body의 길이.


body
해당 reqeust의 실제 메세지/내용.
POST
 요청은 업데이트를 하기 위해 서버에 데이터를 전송.

GETHEAD, DELETE등 리소스를 가져오는 요청은 보통 본문이 필요가 없음
HTTP reponse 구조
1. status line : Response의 상태를 간략하게 나타내주는 부분
2. header
3. body

status line 
형태 : <HTTP version> <Status code> <Status text>
ex) HTTP/1.1 404 Not Found

1. HTTP version  : 사용되는 HTTP 버젼.
2. Status code : 응답 상태를 나타내는 숫자 코드
3. Status tex : 응답 상태를 간략하게 설명

200 OK 문제없이 다 잘 실행 되었을때 보내는 코드.
301 Moved Permanently 해당 URI가 다른 주소로 바뀌었을때 보내는 코드.
400 Bad Request
해당 요청이 잘못된 요청일대 보내는 코드.
주로 요청에 포함된 input 값들이 잘못된 값들이 보내졌을때 사용되는 코드. (예를 들어, 전화번호를 보내야 되는데 text가 보내졌을때)
401 Unauthorized
유저가 해당 요청을 진행 할려면 먼저 로그인을 하거나 회원 가입을 하거나 등등이 필요하다는것을 나타내려 할때 쓰이는 코드.
403 Forbidden
유저가 해당 요청에 대한 권한이 없다는 뜻.
404 Not Found
요청된 uri가 존재 하지 않는다는 뜻.
500 Internal Server Error
서버에서 에러가 났을때 사용되는 코드.


header
해당 request에 대한 추가 정보를 담고 있는 부분
Key:Value 쌍으로 이루어져 있다.

body
해당 reqeust의 실제 메세지/내용.
POST
 요청은 업데이트를 하기 위해 서버에 데이터를 전송.

GETHEAD, DELETE등 리소스를 가져오는 요청은 보통 본문이 필요가 없음

 

API : application programming interface

  • 소프트웨어 시스템이 제공하는 기능이나 서비스를 제어 및 이용하기 위해, 소프트웨어 시스템들 간의 또는 소프트웨어와 사용자간의 지정된 형식으로 요청및 결과를 주고 받을 수 있는 상호작용 수단 


REST : REpresentational State Transfer

  • 자원의 표현으로 해당 자원의 상태를 전달하는 소프트웨어 아키텍쳐 스타일
  • example
    자원의 표현 : 데이터의 표현=>데이터의이름
    자원의 상태 : 데이터의 실제 정보

 

RESTful API

  • 웹서비스에 REST를 적용하면, url를 통해 resource를 명시하고, http method를 통해 자원에 대한 operation을 명시하여request 의모습(자원의 표현)자체만 으로도 request가 어떤 동작이나 정보(자원의 상태)를 위한것인지 추론가능한 api를 작성할 수 있다!

 

 

'Web > backend' 카테고리의 다른 글

인증(Authentication) & 인가(Authorization)  (0) 2020.10.24
Django polls 앱  (0) 2020.10.24
Django 기본 개념  (0) 2020.10.24
Node.js 기본 개념 및 간단한 웹서버 구현  (0) 2020.10.24
0. web service intro  (0) 2020.07.18