1. HTTP/2 순서
HTTP/2는 TCP 기반이며 HTTP/3는 UDP 기반 입니다.
HTTP/2 순서
1. TCP connection을 통하여 Client와 Sever 연결 확인
2. Client에서 request(요청)하여 GET(request메소드)을 통한 URL(정보를 받기위한 경로), headers(정보)으로 서버에 요청
3. Sever에서 response(응답) 통하여 status code와 관련된 파일을 보낸다.
4. TCP connection이 닫힌다.
2. HTTP Status Code 정리
100번대 (Informational)
100 | Continue - 응답은 지금까지의 상태가 괜찮으며 클라이언트가 계속해서 요청해라 |
102 | Processing - 서버가 요청을 수신하였으며 이를 처리하고 있지만, 아직 제대로 된 응답을 알려줄 수 없음을 알려줍니다. |
200번대 (Successful)
200 | OK - 요청이 성공적으로 되었습니다 |
201 | Created - 요청이 성공적이었으며 그 결과로 새로운 리소스가 생성되었습니다. |
204 | No content - 요청에 대해서 보내줄 수 있는 콘텐츠가 없지만, 헤더는 의미있을 수 있습니다. |
300번대 (Rdeirection)
301 | Moved Url |
302 | Found - 요청한 리소스의 URI가 일시적으로 변경되었음을 의미 |
303 | See Other (get 요청) - 요청한 리소스를 다른 URI에서 GET 요청을 통해 얻어야 할 때, 서버가 클라이언트로 직접 보내는 응답입니다. |
307 | Temporary Redirect - 클라리언트가 요청한 리소스가 다른 URI에 있으며, 이전 요청과 동일한 메소드를 사용하여 요청해야할 때, 서버가 클라이언트에 이 응답을 직접 보냅니다. 이것은 302 Found HTTP 응답 코드와 동일한 의미를 가지고 있으며, 사용자 에이전트가 반드시 사용된 HTTP 메소드를 변경하지 말아야 하는 점만 다릅니다 |
400번대 (Client error)
400 | Bad Request - 이 응답은 잘못된 문법으로 인하여 서버가 요청을 이해할 수 없음을 의미 |
401 | Unauthorized - 로그인 되지 않은 사람이 특정 API을 요청할 때 |
403 | Forbidden (admin) - 클라이언트는 콘텐츠에 접근할 권리를 가지고 있지 않습니다 |
404 | Not Found - 서버는 요청받은 리소스를 찾을 수 없습니다. 브라우저에서는 알려지지 않은 URL을 의미합니다. |
405 | Method Not Allowed - 필수적인 메소드인 GET과 HEAD는 제거될 수 없으며 이 에러 코드를 리턴할 수 없습니다. (서버에 없는 URL 엔드포인트) |
409 | Conflict - 이 응답은 요청이 현재 서버의 상태와 충돌될 때 보냅니다. |
410 | Gone - 리소스가 삭제되었을 때 |
429 | Too Many Requests - 사용량 초과 오류 |
500번대 (Server error)
500 | Internal Server Error - 서버 내부 문제로 처리 불가능 |
502 | Bad Gateway - 중간에 있는 서버가 처리를 어떻게 할지 모를 때 |
503 | Service Unavailable - 서버가 준비가 되지 않았을 때 |
3. HTTP Request Methods
GET (get) | GET을 사용하는 요청은 오직 데이터를 받기만 합니다. |
Status Code : 200, 401, 403, 404, 405 |
|
POST (create) | URL에 가리키는 곳에 만들때 |
Status Code : 201, 401, 403, 404, 409 |
|
PUT (replace) | URL에 가리키는 곳에 업데이트 |
DELETE (delete) | URL에 가리키는 곳에 삭제 |
PATCH (replace partially) | URL에 가리키는 곳에 부분 업데이트 |
Status Code : 200, 204, 403, 404, 405 |
|
HEAD (get without body) | GET 메서드의 요청과 동일한 응답을 요구하지만, Head만 받을때 |
OPTIONS (all supported method for URL) | 사용가능한 request 옵션에 대해 알고 싶을때 |
TRACE (echoes the received request) | 서버가 동작하는지에 대해 반응 확인 |
Status Code : 200, 401, 403, 404, 405 |
※ Status Code는 절대적인 것이 아닌 예시
1. 서버에 있는 데이터를 읽을 때만 사용하는 Methods (읽기만 하기에 안전하다)
- GET, HEAD, OPTIONS, TRACE
2. 서버에 데이터를 변경하는 Methods (서버에 데이터를 변경하기에 불안전하다)
- POST, PUT, DELETE, PATCH
멱등성
동일한 요청을 한 번 보내는 것과 여러 번 연속으로 보내는 것이 같은 효과를 지니고, 서버의 상태도 동일하게 남을 때, 해당 HTTP 메서드가 멱등성을 가졌다고 말합니다. 다른 말로는, 멱등성 메서드에는 통계 기록 등을 제외하면 어떠한 부수 효과(side effect)도 존재해서는 안됩니다. 올바르게 구현한 경우 GET, HEAD, PUT, DELETE 메서드는 멱등성을 가지며, POST 메서드는 그렇지 않습니다. 모든 안전한 메서드는 멱등성도 가집니다.
'CS > Server, 네트워크' 카테고리의 다른 글
여러 개의 값을 갖는 쿼리 파라미터 처리하기 (Nest.js) (1) | 2024.10.29 |
---|---|
[네트워크] 웹 캐시 (0) | 2021.08.09 |
[네트워크] HTTP 헤더 (0) | 2021.08.09 |
[네트워크] 인터넷 프로토콜 (IP, TCP/UDP, HTTP) (0) | 2021.08.09 |
[Server] Express, Middleware (0) | 2021.08.07 |