-
HTTP 패킷 / 메소드 / 상태코드와 메세지Programming/BackEnd 2020. 5. 11. 14:31
HTTP 란?
- 메세지의 구조 및 클라이언트와 서버가 메세지를 어떻게 교환하는 지에 대해 정의
- 인터넷상에서 데이터를 주고 받기 위한 서버/클라이언트 모델을 따르는 전송 프로토콜
- 애플리케이션 레벨의 프로토콜로 TCP/IP위에서 작동
- 클라이언트에서 요청(request)를 보내면 서버는 요청을 처리해서 응답(response)
- 80번 port 이용
HTTP 패킷 구조
- 클라이언트가 서버로 요청을 했을때, 보내는 데이터를 HTTP 패킷이라 표현한다.
- HTTP 프로토콜을 쓰므로, 앞에 HTTP가 붙고 인터넷을 통해 보내는 데이터를 패킷이라 표현하므로, HTTP패킷 이라 부른다.
- HTTP패킷의 구조는 크게 헤더 와 바디로 나뉘어진다.
- 헤더에는 7가지 HTTP 메서드 방식중 무엇을 썻는지, 클라이언트의 정보, 브라우저 정보, 접속할 URL 등등 과 같은 클라이언트 정보를 담는다.
- 바디는 보통 비어있다. 하지만, 특정 데이터를 담아서 서버에게 요청을 보낼 수 있다.
상태코드와 메세지
- 200 OK : 요청 성공
- 301 Moved Parmanently : 요청 객체가 영원히 이동됨.
- 400 Bad Request : 서버가 요청을 이해할 수 없다는 일반 오류 코드.
- 404 Not Found : 요청 문서가 서버에 존재하지 않는다.
- 500 Internal Server Error : 내부 서버가 오류가 있어 요청을 수행하지 못함.
145.254.160.237(클라이언트)에서 65.208.228.223(서버)으로 HTTP 프로토콜 방식으로 연결을 시도.
38 번 패킷을 보면, 65.208.228.223(서버)에서 145.254.160.237(클라이언트)로 HTTP/1.1 200OK 응답 메세지를 보냄.
출처: https://goddaehee.tistory.com/169 [갓대희의 작은공간]
HTTP 메소드
- HTTP 메소드는 서버에 요청을 보내는 방법으로, 의미단위로 생각해야 한다.
- 서버는 클라이언트로 전달받은 요청에서 주어진 메소드에 해당하는 일을 수행합니다.
예를 들어, 클라이언트가 SNS앱에서 차단 요청을 보냈다. 서버는 요청에 대한 수행으로 차단 컬럼의 데이터를 수정(UPDATE)를 하거나 해당 유저를 친구리스트에서 삭제(DELETE)할 것이다. 이때 서버는 데이터를 UPDATE or DELETE를 했지만, Restful API 방식으로는 의미단위로 생각해야 하기 때문에 HTTP 메소드는 POST가 된다. 왜냐하면 차단 유저를 생성하는 것이기 때문이다.- HTTP 메소드를 사용할 때는 의미단위로 생각해서, DB에서는 PUT작업을 수행하더라도, 클라이언트 입장에서 삭제하는 행위이면 DELETE로 명명해야한다.
HTTP 메소드의 종류와 역할은 다음과 같다.
- GET: URI 에 해당하는 정보의 전송요청을 보냄 (조회) / 지정된 리소스(URI)를 요청
- HEAD: URI 에 해당하는 정보의 전송을 요청. GET 과는 다르게 Meta 정보만을 요청. 응답데이터(body)는 받지 않는다.
- POST: 서버가 처리할 수 있는 자료를 보냄 (생성). 서버가 클라이언트의 폼 입력 데이터의 수락을 요청. 클라이언트는 서버로 HTTP Body에 Data를 전송.
- PUT: 자료를 전송하여 해당 URI 에 자료를 저장 (수정). 클라이언트가 전송한 데이터를 지정한 uri로 대체한다. 클라이언트는 서버로 http body에 data를 전송한다.
- DELETE: 해당 URI 의 자원/정보를 삭제 (삭제)
- CONNECT: 프록시가 사용하고, 연결을 요청
- OPTIONS: 요청한 URI 에 어떤 메소드가 가능한지 질문
- TRACE: 이전까지 요청한 정보들의 목록을 요청
- PATCH: 자원의 부분 교체 (일부수정)
Query String(Query Parameter) vs Path Variable
- 만약 어떤 resource를 식별하고 싶으면 Path Variable을 사용.
- 정렬이나 필터링을 한다면 Query Parameter를 사용.
Query String(Query Parameter)
- /users?id=123 # 아이디가 123인 유저를 가져온다.
URL의 파라미터(prarameter / 쿼리스트링 query string) Path Variable
- /users/123 # 아이디가 123인 유저를 가져온다.
- query방식과 달리 ? 뒤에 데이터를 삽입하는 것이 아니라 url 경로 중에 data가 삽입된 것을 알 수 있다.
/users // 사용자 전체의 목록을 가져온다.
/users?occupation=programer // 직업이 프로그래머인 사용자 목록만을 가져온다.
/users/123 // id 값이 123인 사용자를 가져온다.
https://ryan-han.com/post/translated/pathvariable_queryparam/
[번역] Path Variable과 Query Parameter는 언제 사용해야 할까? | Integerous DevLog
원작자의 허락을 받고 번역한 글입니다. 원문: When Should You Use Path Variable and Query Parameter? *역자 주: Spring boot와 Vue.js로 파일럿 프로젝트를 개발하던 중, 카테고리로 게시물 목록을 필터링할 때 @Pat
ryan-han.com
HTTP 패킷 / GET vs POST
GET방식 과 POST방식
오늘 포스팅 할 내용은, Http 프로토콜이 제공해주는 7가지 메서드들 중 웹서비스 개발에 주로 사용하는, GET 메서드와 POST 메서드에 대하여 기술한다. GET메서드 POST메서드 란? 위에서 말했다시피,
mommoo.tistory.com
https://sanghaklee.tistory.com/57
RESTful API 설계 가이드
1. RESTful API 설계 가이드 본 문서는 REST API를 좀 더 RESTful 하게 설계하도록 가이드할 목적으로 만들어졌다. 따라서, 기본적인 REST API 개념 설명은 아래의 링크로 대신한다. REST API 제대로 알고 사용
sanghaklee.tistory.com
https://medium.com/@dydrlaks/rest-api-3e424716bab
REST API ?
이전 글에서 API에 대하여 알아보았습니다.
medium.com
HTTP 패킷
https://goddaehee.tistory.com/169
[HTTP 기초_1] 헤더 (요청(Request) 헤더, 응답(Response)헤더)
[HTTP 기초_1] 헤더 (요청(Request) 헤더, 응답(Response)헤더) 안녕하세요. 갓대희 입니다. 이번 포스팅은 [ HTTP란?, HTTP 헤더 입니다. : ) 헤더로 들어가기 앞서 HTTP가 무엇인지 부터 알아보자. ▶ HTTP..
goddaehee.tistory.com
HTTP 메소드데이터 포멧 JSON XMLAPIRESTFULFRAMEWORK VS LIBRARYLOGIN (SESSION OAUTH JWT)PAGING3RD PARTY프레임워크사용법 (컨트롤러, pdo, index)path variable , query string, bodyjwt 발급과 검증'Programming > BackEnd' 카테고리의 다른 글
3. Backend Language, Restful, Framework (0) 2020.05.11 OAuth / JWT (0) 2020.05.11 2. DataBase (2) 2020.05.05 DBMS가 Sever-Client 구조를 취하게 된 이유 (0) 2020.05.03 Mysql Workbanch vs PhpMyAdmin (0) 2020.05.03