전체 글 133

[HTTP] HTTP 헤더 - 전송 방식

전송 방식 Transfer-Encoding Range, Content-Range 전송 방식 종류 단순 전송 압축 전송 분할 전송 범위 전송 단순 전송 Content-Length 단순히 메시지 바디의 길이만 포함해서 전송한다. 압축 전송 Content-Encoding Content-Type, Length 외에 Content-Encoding을 포함시켜, 압축 방식을 함께 전송한다. 분할 전송 Transfer-Encoding Transfer-Encoding을 통해 분할 전송을 하겠다고 헤더를 통해 알려준다. 몇 바이트로 분할했는지와 분할한 메시지를 순차적으로 전송한다. 더 이상 보낼 데이터가 없으면 0과 함께 \r\n을 전송한다. Transfer-Encoding을 사용할 경우, Content-Length를 포..

HTTP/HTTP 헤더 2023.01.21

[HTTP] HTTP 헤더 - 협상 (콘텐츠 네고시에이션)

협상 (콘텐츠 네고시에이션) 클라이언트가 선호하는 표현 요청 Accept : 클라이언트가 선호하는 미디어 타입 전달 Accept-Charset : 클라이언트가 선호하는 문자 인코딩 Accept-Encoding : 클라이언트가 선호하는 압축 인코딩 Accept-Language : 클라이언트가 선호하는 자연 언어 협상 헤더는 요청 시에만 사용 Accept-Language 적용 전 1. 클라이언트가 /event 페이지 접속 요청 2. /event 페이지의 default 언어인 영어(en)로 응답 Accept-Language 적용 후 1. 클라이언트가 /event 페이지에 선호하는 언어는 한국어(ko)로 요청 2. /event 페이지에서 한국어를 지원하기 때문에 한국어 페이지로 응답 Accept-Language..

HTTP/HTTP 헤더 2023.01.21

[HTTP] HTTP 헤더

HTTP 헤더 header-field = field-name ":" OWS field-value OWS (OWS:띄어쓰기 허용) field-name은 대소문자 구분 없음 용도 HTTP 전송에 필요한 모든 부가정보 예) 메시지 바디의 내용, 메시지 바디의 크기, 압축, 인증, 요청 클라이언트, 서버 정보, 캐시 관리 정보... 등 표준 헤더가 너무 많음 필요시 임의의 헤더 추가 가능 HTTP BODY message body - RFC7230 (최신) 메시지 본문(message body)을 통해 표현 데이터 전달 메시지 본문 = 페이로드(payload) 표현은 요청이나 응답에서 전달할 실제 데이터 표현 헤더는 표현 데이터를 해석할 수 있는 정보 제공 데이터 유형(html, json), 데이터 길이, 압축 정..

HTTP/HTTP 헤더 2023.01.21

[HTTP] HTTP 상태코드 - 4xx, 5xx (클라이언트, 서버 오류)

4xx (Client Error) 클라이언트 오류 클라이언트의 요청에 잘못된 문법 등으로 서버가 요청을 수행할 수 없음 오류의 원인이 클라이언트에 있음 중요! 클라이언트가 이미 잘못된 요청, 데이터를 보내고 있기 때문에 똑같은 재시도가 실패함 400 Bad Request 클라이언트가 잘못된 요청을 해서 서버가 요청을 처리할 수 없음 요청 구문, 메시지 등 오류 클라이언트는 요청 내용을 다시 검토하고, 보내야 함 예) 요청 파라미터가 잘못되거나, API 스펙이 맞지 않을 경우 401 Unauthorized 클라이언트가 해당 리소스에 대한 인증이 필요함 인증(Authentication) 되지 않음 401 오류 발생 시 응답에 WWW-Authenticate 헤더와 함께 인증 방법을 설명 참고 인증(Authen..

[HTTP] HTTP 상태코드 - 3xx (리다이렉션) (2)

일시적인 리다이렉션 302, 307, 303 리소스의 URI가 일시적으로 변경 따라서 검색 엔진 등에서 URL을 변경하면 안 됨 302 Found 리다이렉트시 요청 메서드가 GET으로 변하고, 본문이 제거될 수 있음 307 Temporary Redirect 302와 기능은 같음 리다이렉트시 요청 메서드와 본문 유지(요청 메서드를 변경하면 안 된다.) 303 See Other 302와 기능은 같음 리다이렉트시 요청 메서드가 GET으로 변경 PRG : Post/Redirect/Get 일시적인 리다이렉션 - 예시 POST로 주문 후에 웹 브라우저를 새로고침 하면? 새로고침은 다시 요청 중복 주문이 될 수 있다. PRG: 사용 전 1. 주문 페이지에서 mouse 1개 구입 요청 2. 주문 DB 저장 3. 정상 ..

[HTTP] HTTP 상태코드 - 3xx (리다이렉션) (1)

3xx (Redirection) 요청을 완료하기 위해 유저 에이전트의 추가 조치 필요 300 Multiple Choices 301 Moved Permanently 302 Found 303 See Other 304 Not Modified 307 Temporary Redirect 308 Permanent Redirect 리다이렉션 이해 웹 브라우저는 3xx 응답의 결과에 Location 헤더가 있으면, Location 위치로 자동 이동 (리다이렉트) 1. 클라이언트가 /event 페이지 요청 2. /event는 더 이상 지원하지 않는 페이지임으로 301을 띄우고 /new-event 주소 응답 3. 클라이언트는 Location 주소를 통해 자동 리다이렉트 4. 클라이언트가 /new-event 페이지 요청 5...

[HTTP] HTTP 상태코드 - 2xx (성공)

2xx (Successful) 클라이언트의 요청을 성공적으로 처리 200 OK 201 Created 202 Accepted 204 No Content 200 OK 요청 성공 201 Created 요청을 성공해서 새로운 리소스가 생성됨 202 Accepted 요청이 접수되었으나 처리가 완료되지 않았음 배치 처리 같은 곳에서 사용 예) 요청 접수 후 1시간 뒤에 배치 프로세스가 요청을 처리함 204 No Content 서버가 요청을 성공적으로 수행했지만, 응답 페이로드 본문에 보낼 데이터가 없음 예) 웹 문서 편집기에서 save 버튼 save 버튼의 결과로 아무 내용이 없어도 된다. save 버튼을 눌러도 같은 화면을 유지해야 한다. 결과 내용이 없어도 204 메시지(2xx)만으로 성공을 인식할 수 있다. ..

[HTTP] HTTP 상태코드

상태 코드 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능 1xx (Informational): 요청이 수신되어 처리 중 2xx (Successful): 요청 정상 처리 3xx (Redirection): 요청을 완료하려면 추가 행동이 필요 4xx (Client Error): 클라이언트 오류, 잘못된 문법등으로 서버가 요청을 수행할 수 없음 5xx (Server Error): 서버 오류, 서버가 정상 요청을 처리하지 못함 만약 모르는 상태 코드가 나타나면? 클라이언트가 인식할 수 없는 상태코드를 서버가 반환하면? 클라이언트는 상위 상태코드로 해석해서 처리 미래에 새로운 상태 코드가 추가되어도 클라이언트를 변경하지 않아도 됨 예) 299 ??? -> 2xx (Successful) 451 ??? ..

[HTTP] 참고하면 좋은 URI 설계 개념

참고하면 좋은 URI 설계 개념 문서(document) 단일 개념(파일 하나, 객체 인스턴스, 데이터베이스 row) 예) /members/100, /files/star.jpg 컬렉션(collection) 서버가 관리하는 리소스 디렉터리 서버가 리소스의 URI를 생성하고 관리 예) /members 스토어(store) 클라이언트가 관리하는 자원 저장소 클라이언트가 리소스의 URI를 알고 관리 예) /files 컨트롤러(controller), 컨트롤 URI 문서, 컬렉션, 스토어로 해결하기 어려운 추가 프로세스 실행 동사를 직접 사용 예) /members/{id}/delete 출처 : https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9..

HTTP/HTTP 메서드 2023.01.19

[HTTP] HTTP API 설계 예시

HTTP API 설계 예시 HTTP API - 컬렉션 POST 기반 등록 예) 회원 관리 API 제공 HTTP API - 스토어 PUT 기반 등록 예) 정적 콘텐츠 관리, 원격 파일 관리 HTML Form 사용 웹 페이지 회원 관리 GET, POST만 지원 회원 관리 시스템 API 설계 - POST 기반 등록 회원 목록 /members > GET 회원 등록 /members > POST 회원 조회 /members/{id} > GET 회원 수정 /members/{id} > PATCH, PUT, POST 회원 삭제 /members/{id} > DELETE POST - 신규 자원 등록 특징 클라이언트는 등록될 리소스의 URI를 모른다. 회원 등록 /members > POST POST /members 서버가 새로..

HTTP/HTTP 메서드 2023.01.19