HTTP는 HyperText Transfer Protocol의 약자로 주로 HTML과 같은 HyperText문서를 주고 받기 위해 만들어졌고, 최근에는 HTML뿐 아니라 모든 웹 관련 API통신에 이용하고 있는 통신 프로토콜입니다. HTTP 프로토콜은 **비연결성(Connectionless)**과 **무상태성(Stateless)**의 특징을 가지는 통신 프로토콜입니다.
비연결성과 무상태성이라는 특징은 통신을 하기위한 소프트웨어 구조를 단순하게 만들어주어 몇몇 성능적 이슈에도 불구하고 가장 인기있는 통신 프로토콜이 되게 해주었습니다.
HTTP 구조에 대하여 알아봅시다. HTTP 구조를 이해하면 API를 설계할 때 더 좋은 구조로 API를 설계할 수 있고, 다른 사람이 설계한 API나 소스코드를 보는데 도움을 매우 많이 주기 때문에 꼭 알고 가는 것을 추천합니다.
요청 메세지는 start-line
header
empty-line
body
로 구성되어 있습니다.
start-line은 HTTP METHOD
와 URL
, 그리고 protocol version
에 대해서 기술되어 있습니다. 어떤 요청을 하는지에 대한 내용을 기술하죠
GET
, POST
, PATCH
, PUT
, DELETE
와 같은 http method를 적는 부분입니다. Server에서 요청을 Routing할때 사용되며 주로 각각의 Method는 차례대로 READ
CREATE
UPDATE(part)
UPDATE(all)
DELETE
를 의미합니다.https://couchcoding.kr/{리소스경로}
와 같이 전체 주소를 입력하기도 하며, 같은 HOST에서 요청을 보낼 경우 /{리소스경로}
와 같이 PATH만 요청하기도 합니다.Header는 요청에 대한 정보
, 응답에 대한 요청
, 인증 정보
, 접속 정보
등 요청에서 필요한 다양한 요소를 담을 수 있는 공간입니다. key, value로 구성되어 있습니다.
많이 쓰는 Header에 대해서 알아봅시다.
application/json
,
이미지나 파일을 전송할때 사용할때는 multipart/form-data
,
바이너리가 없는 form을 전송할떄 사용할때는 application/x-www-form-urlencoded
,
타입이 없는 text를 전송할때 사용할때는 plain/text
를 사용합니다.
이 부분을 잘못 체크해서 에러나는 케이스가 많으니 이유없이 API 호출이 실패할때 한번 확인해보세요Cookie나 session-id의 경우 프레임워크나 라이브러리에서 처리 해주기 때문에 직접 셋업할일이 많지는 않지만 해당 header의 존재를 알고 있다면 postman
이나 restclient
사용시 해당 정보를 header에 넣어 시뮬레이션 하는데 사용할 수 있습니다.
session과 cookie, Authorization에 대한 자세한 부분은 다음 포스팅에서 조금 더 자세히 설명하도록 하겠습니다.
Header 와 body를 구분하는 부분입니다.
메세지 전문이 들어갑니다. Header의 Content-Type
과 꼭 Type을 맞춰줘야 합니다.
HTTP Method
별로 GET
과 DELETE
는 body를 쓰지 않으니 꼭 확인해 주세요!
요청에 따른 응답 메세지 부분입니다. 전체 구조는 요청과 똑같으나 내용의 차이가 조금씩 있습니다.
응답의 start-line에는 protocol version
, Http Status code
와 Http Status
가 담겨있습니다.
Http Status
는 요청에대한 응답 상태로 200번대는 성공, 400번대는 사용자 요청 에러, 500번대는 서버에러를 의미합니다.
에러 메세지 응답시 에러 코드를 body에 담아 보낼 수 도 있지만 센스있게 Http Status를 사용해보는 것도 좋습니다.
요청과 유사하나 서버에 대한 정보를 건내 줍니다. 사용자의 cookie나 session을 초기화 하는데도 이용됩니다.
empty-line과 body는 요청과 동일합니다 ㅎㅎ
이번 포스팅에서는 Http에 대한 정의 구조에 대해 알아보았습니다. 구조에 대해서 이해만 해도 이전에 이해안되던 많은 부분을 이해하는데 도움을 줄것으로 생각됩니다. 다음 포스팅에서는 Session, Cookie, 인증 토큰에 대해서 알아보도록 하겠습니다.
couchcoding
2022-12-07
개발 초보도 바로 적용해 볼 수 있는 좋은 코드 작성법
일반적으로 좋은 코드란 가독성이 좋아 이해하기 쉽고, 변경하기 쉬우며, 재사용하기 쉽고, 효율적인 코드를 이야기합니다. 소프트웨어 개발은 단 한번에 개발에서 끝나는 것이 아니라 이후 수많은 변경 이 필요하기 때문에 기능 개발 만큼 중요한 것이 바로 유지보수 입니다. 따...
개발 이론
couchcoding
2022-12-07
Firebase로 Google 로그인 구현하기 (Spring + React 예제)
최근 여러 서비스를 이용하면 예전처럼 ID, Password를 입력해서 회원가입을 하는 경우는 거이없고 대부분 구글, 카카오, 네이버등 다른 서비스의 아이디를 이용해서 로그인을 합니다. 이러한 기술을 OAuth라고 합니다. ...
개발 이론
couchcoding
2022-12-07
프레임워크가 무엇이고, 어떻게 사용해야할까?? (프레임워크 동작방식 예제)
프레임워크(Framework) 라는 단어는 Frame(틀) + work(일)이라는 단어의 합성어입니다. 일 구조, 혹은 작업 구조라는 뜻과 같이 프레임워크는 어떠한 일을 처리하기 위한 구조를 제공합니다. 프레임워크 위에서 개발을 하면 우리는 일을 하기위한 전체 구조와...
개발 이론
couchcoding
카우치코딩 공식 계정입니다.