HTTP
하이퍼텍스트 전송 프로토콜(HTTP)은 HTML과 같은 하이퍼미디어 문서를 전송하기위한 애플리케이션 레이어 프로토콜
클라이언트와 서버가 서로에게 HTTP message를 주고 받으며 통신한다
HTTP는 Stateless : 각각의 요청/응답은 독립적인 요청/응답(만일 여러 요청과응답 의 진행과정이나 데이터가 필요할때는 쿠키나 세션 등등을 사용)
HTTP Message
메시지 타입은 두 가지가 존재
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 body 해당 reqeust의 실제 메세지/내용. POST 요청은 업데이트를 하기 위해 서버에 데이터를 전송. GET, HEAD, 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 요청은 업데이트를 하기 위해 서버에 데이터를 전송. GET, HEAD, 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 |