250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- bcrypt
- 호이스팅
- pm2
- Django
- wecode
- TypeError: this.boardRepository.createBoard is not a function
- manytomanyfield
- status code
- typescript
- OSI7계층
- JWT
- 노드
- node
- 자바스크립트
- 스코프
- 트랜잭션
- westagram
- 장고초기세팅
- javascript
- Jest
- 프로미스
- CORS
- rebase
- crud2
- 실행 컨텍스트
- django westagram
- nodeJS
- on_delete
- async/await
- docker
Archives
- Today
- Total
될때까지
((HTTP Request & Response)) HTTP Request & Response Message 구조 본문
728x90
Request 메세지 구조
HTTP 요청은 클라이언트에서 서버에 일을 시작하게 하기 위해 보내는 메세지다. 이 메세지의 구조는 크게 세 부분으로 나뉜다.
1. Start Line : HTTP request message의 시작라인
GET /login HTTP/1.1
# 해석: GET 메소드로 login 이라는 요청 타겟에 HTTP 1.1 버전으로 요청을 보내겠다!
- HTTP Method : 해당 요청이 의도한 액션을 정의한다 (GET, POST, PUT, DELETE 등)
- Request Target : 해당 request가 전송되는 목표 url
- HTTP Version : 사용되는 HTTP 버전을 뜻한다(주로 1.1버전이 널리쓰임)
2. Headers : 해당 요청에 대한 추가정보(메타 데이터)를 담고는 부분
Headers: {
Host:
User-Agent:
Content-Type:
Content-Length:
Authorization:
}
- key : value 값으로 되어있다. (자바스크립트에서는 객체, 파이썬에서는 딕셔너리 형태라고 생각하면 쉬움)
- Host : 요청을 보내는 타겟의 주소(ex. www.apple.co.kr)
- User-Agent : 요청을 보내는 클라이언트에 대한 정보(ex. chrome / safari등)
- Content-Type : 해당 요청을 보내는 메시지 바디의 타입 (ex. application / json)
- Content-Length : body 내용의 길이
- Authorization : 회원의 인증/인가를 처리하기 위해 로그인 토큰이 담긴다.
3. Body : 요청 보낼 내용
ex) 로그인 시에 서버에 보낼 요청의 내용
Body: {
"user_email":"wecode@gmail.com" ,
"user_password": "wecode"
}
Response 메세지 구조
요청과 비슷하다.
1. Status Line : 응답의 상태줄
HTTP/1.1 404 Not Found
# 해석: HTTP 1.1 버전으로 응답하고 있는데, 프론트엔드에서 보낸 요청(ex. 로그인 시도)에 대해서
# 유저의 정보를 찾을 수 없기 때문에(Not Found) 404 상태 메세지를 보낸다.
HTTP/1.1 200 SUCCESS
# 해석: HTTP 1.1 버전으로 응답하고 있는데, 프론트엔드에서 보낸 요청에 대해서 성공했기 때문에
# 200 상태 메세지를 보낸다.
- HTTP Version : 사용되는 HTTP 버전을 뜻한다(주로 1.1버전이 널리쓰임)
- Status Code : 응답 메세지의 상태코드
- Status Text : 응답 메세지의 상태를 간략하게 설명해주는 텍스트
2. Headers : 응답의 추가 정보(메타 데이터)를 담고 있는 부분
- 요청의 헤더와 동일하지만 응답에서만 사용되는 헤더의 정보들이 있다(ex. 요청하는 브라우저의 정보가 담긴 User-Agent대신 Server헤더가 사용)
3. Body
- 요청의 메소드에 따라 항상 Body가 존재하지 않듯 응답도 응답의 형태에 따라 데이터를 전송할 필요가 없으면 Body가 없다.
- 가장 많이 사용되는 Body의 데이터 타입은 JSON이다.
- 로그인 요청에 대해 성공했을 때 응답은 아래와 같다.
Body: {
"message": "SUCCESS"
"token": "kldiduajsadm@9df0asmzm" (암호화된 유저의 정보)
}
HTTP Status code
- 1xx : 조건부 응답
- 2xx : 성공
- 200 - OK
- 201 - Created
- 204 - No content
- 3xx : 리다이렉션 완료
- 4xx : 요청 오류
- 400 - Bad request
- 401 - Unauthorized (로그인도 안했을 때 처럼 인증문제)
- 403 - Forbidden (로그인했지만 관리자만 접근가능 처럼 권한문제)
- 404 - Not found
- 5xx : 서버 오류
- 500 - Internal server error
728x90
'학습 > 개념정리' 카테고리의 다른 글
((git)) git flow (0) | 2022.09.05 |
---|---|
((Database)) SQL, NoSQL, RDB, RDBMS 개념정리 (0) | 2022.09.04 |
((RESTful API)) REST, path parameter and query parameter, status code (0) | 2022.08.06 |
((Software Testing)) E2E, Integration, Unit test (0) | 2022.08.06 |
((MySQL)) 자주 사용하는 명령어 정리 (0) | 2022.07.31 |