Protocol, HTTP, REST API

김종현·2023년 3월 23일
0

Protocol 이란?

-컴퓨터들 간의 원활한 통신을 위해 지키기로 약속한 규약
-프로토콜은 컴퓨터 내부에서, 또는 컴퓨터 사이에서 데이터의 교환 방식을 정의하는 규칙 체계

  • IP
  • TCP
  • UDP
  • HTTP
  • SNMP
  • FTP
  • SMTP
  • SSH
  • Telnet

HTTP


-인터넷에서 resource 들을 요청하고 받아옴

HTTP 개요

-http는 html문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜
-HTTP는 웹에서 이루어지는 모든 데이터 교환의 기초이며, 클라이언트-서버 프로토콜 이기도 하다.

  • 클라이언트-서버 프로토콜 : (보통 웹브라우저인) 수신자 측에 의해 요청이 초기화되는 프로토콜

-하나의 완전한 문서는 텍스트, 레이아웃 설명, 이미지, 비디오, 스크립트 등 불러온(fetched) 하위 문서들로 재구성.
-애플리케이션 레벨의 프로토콜로 TCP/IP 위에서 작동
-Port : 80

HTTP Request & Response

  1. 요청과 응답
    -클라이언트와 서버들은 (데이터 스트림과 대조적으로) 개별적인 메시지 교환에 의해 통신.
    -보통 브라우저인 클라이언트에 의해 전송되는 메시지를 요청(HTTP Request)이라고 부르며, 그에 대해 서버에서 응답으로 전송되는 메시지를 응답(HTTP Response)이라고 부른다.

  2. URL (Uniform Resource Locators)

    -서버에 자원을 요청하기 위해 입력하는 영문 주소

  3. HTTP 요청 Method
    -HTTP에서, 클라이언트는 서버로 요청을 보낸다.
    -요청시 요청 메서드로 특정 요청에 대한 동작을 정의한다.

a. GET : 존재하는 자원에 대한 요청 - 조회( Read )

  • 암호화되지 않은 형태의 데이터를 서버로 전송하는데 사용되는 가장 일반적인 방법

b.HEAD : - GET과 유사한 방법으로 Response Body를 포함하지 않고 사용

c. POST : 새로운 자원을 생성( Create )

  • 특정 양식의 데이터를 암호화하여 서버로 전송하는데 사용

d. PUT : 존재하는 자원에 대한 변경( Update )

  • 특정 대상의 데이터를 갱신(Update)하는데 사용

e. DELETE : 존재하는 자원에 대한 삭제( Delete )

  • URL에 지정된 대상을 삭제(DELETE)하는 데 사용됩니다.

이와 같이 데이터에 대한 조회, 생성, 변경, 삭제 동작을 HTTP 요청 메서드로 정의할 수 있다. 때에 따라서는 POST 메서드로 PUT, DELETE의 동작도 수행할 수 있다.

  1. HTTP 상태코드(status code) : 요청에 대한 응답 상태

-2xx: 성공

  • 200 : GET 요청에 대한 성공
  • 201: 정상적으로 생성이 되었다는걸 서버에서 알려줌 (회원가입 등의 기능에서사용)
  • 204 : No Content. 성공했으나 응답 본문에 데이터가 없음
  • 205 : Reset Content. 성공했으나 클라이언트의 화면을 새로 고침하도록 권고
  • 206 : Partial Conent. 성공했으나 일부 범위의 데이터만 반환

-3xx: 리다이렉션
300번대의 상태 코드는 대부분 클라이언트가 이전 주소로 데이터를 요청하여 서버에서 새 URL로 리다이렉트를 유도하는 경우이다.

  • 301 : Moved Permanently, 요청한 자원이 새 URL에 존재
  • 303 : See Other, 요청한 자원이 임시 주소에 존재
  • 304 : Not Modified, 요청한 자원이 변경되지 않았으므로 클라이언트에서 캐싱된 자원을 사용하도록 권고. ETag와 같은 정보를 활용하여 변경 여부를 확인

-4xx: 클라이언트 에러
400번대 상태 코드는 대부분 클라이언트의 코드가 잘못된 경우이다. 유효하지않은 자원을 요청했거나 요청이나 권한이 잘못된 경우 발생하는데, 가장 익숙한 상태 코드는 404 코드이다. 요청한 자원이 서버에 없다는 의미를 말한다.

  • 400 : Bad Request, 잘못된 요청
  • 401 : Unauthorized, 권한 없이 요청. Authorization 헤더가 잘못된 경우
  • 403 : Forbidden, 서버에서 해당 자원에 대해 접근 금지
  • 404 : Not Found, 요청한 자원이 서버에 존재하지 않음. 없는 url 혹은 존재하지 않는 api를 가지고 요청했을때
  • 405 : Method Not Allowed, 허용되지 않은 요청 메서드
  • 409 : Conflict, 최신 자원이 아닌데 업데이트하는 경우. ex) 파일 업로드 시 버전 충돌

-5xx: 서버 에러

  • 501 : Not Implemented, 요청한 동작에 대해 서버가 수행할 수 없는 경우
  • 503 : Service Unavailable, 서버가 과부하 또는 유지 보수로 내려간 경우

HTTP Message


서버주소, 요청메서드, 상태코드, target path, 헤더정보, 바디정보등이포함.
•요청메시지, 응답 메시지의 모양이 다름.
•HTTP/1.1 메시지는 사람이 읽을 수 있음

HTTP Header

•HTTP 메시지의 헤더에는 콘텐츠 관련정보, 인증관련정보, 쿠키정보, 캐시 관련 정보 등 서버와 클라이언트간 통신시 필요한 정보를 담는다.
•클라이언트 요청시, 서버응답시 모두 헤더에 정보를 담을 수있다

HTTP Status

•HTTP 요청시, 클라이언트는요청의결과에대한상태정보를얻는다.
•200, 400, 500 등숫자코드와, OK, NOT FOUND 등의텍스트로이루어짐.
•코드를이용해각결과에해당하는행위를할수있음

HTTP Request & Response 구조

  1. 시작 줄( start-line )에는 실행되어야 할 요청, 또은 요청 수행에 대한 성공 또는 실패가 기록되어 있습니다. 이 줄은 항상 한 줄로 끝납니다.
  2. 옵션으로 HTTP 헤더( header ) 세트가 들어갑니다. 여기에는 요청에 대한 설명, 혹은 메시지 본문에 대한 설명이 들어갑니다.
  3. 요청에 대한 모든 메타 정보가 전송되었음을 알리는 빈 줄(blank line)이 삽입됩니다.
  4. 요청과 관련된 내용(HTML 폼 콘텐츠 등)이 옵션으로 들어가거나, 응답과 관련된문서(document)가 들어갑니다. 본문의 존재 유무 및 크기는 첫 줄과 HTTP 헤더에 명시됩니다.

HTTP Request

-Head

  • start-line
  1. HTTP Method
  2. URL, Protocol, Port, Domain Path
  3. HTTP Version
  • header : 서버에 대한 추가 정보를 전달하는 선택적 헤더

-Body

  • 본문은 요청의 마지막 부분에 들어간다.
  • 모든 요청에 본문이 들어가지는 않는다.
  • GET , HEAD , DELETE , OPTIONS 처럼 리소스를 가져오는 요청은 보통 본문이 필요가 없다.
  • single-resource bodies
  • multiple-resource bodies

HTTP Response


-Head

  • status-line
  1. Protocol Version
  2. Status Code
  3. Status Message
  • header : 요청 헤더와 비슷한, HTTP 헤더들

Rest API(Representational State Transfer API)

API(Application Programming Interface)는 사용자가 특정 기능을 사용할 수 있도록 제공하는 함수를 의미한다.
•REST API는 HTTP의 요청 메서드에 응하는 서버 API와 클라이언트간 통신의 구조가 지켜야 할 좋은 방법을 명시한 것이다.
•구체적인 내용으로는 요청메서드의 의미, URI 설계, 클라이언트의 상태에 대한 동작 등을 정의한다.

REST API 요청 메서드의 의미

•GET -리소스정보를얻음.
•POST -리소스를생성.
•PUT -리소스를생성하거나업데이트.
•DELETE -리소스를제거.

profile
나는 나의 섬이다.

0개의 댓글