개발/HTTP
-
(HTTP) 16 - HTTP 헤더 (캐시와 조건부 요청)개발/HTTP 2024. 11. 1. 17:00
■ 캐시 기본 동작 캐시가 없으면 데이터가 변경되지 않아도 계속 네트워크 통해서 다운로드 받아야 함인터넷 네트워크는 매우 느리고 비쌈브라우저 로딩 속도가 느리다.느린 사용자 경험 서버에서 cache-control: max-age=60 으로 하면 캐시 유효한 시간 60초로 지정한다는 뜻이다. 웹 브라우저 캐시를 저장하는 저장소에 캐시를 저장한다. 두 번째 요청에서 캐시 저장소에서 캐시 유효시간을 검증해서 유효하다면 해당 캐시에서 조회를 한다. 캐시에서 조회를 하게 되면 캐시 가능 시간동안 네트워크를 사용하지 않아도 된다.비싼 네트워크 사용량 줄일 수 있다.브라우저 로딩 속도가 매우 빠르다빠른 사용자 경험 캐시 유효시간이 초과했으면 다시 요청해야 한다. 기존 결과에서 새롭게 응답 받으 결과를..
-
(HTTP) 15 - HTTP 헤더 (일반 헤더)개발/HTTP 2024. 11. 1. 16:22
HTTP 헤더에는 HTTP 전송에 필요한 모든 부가정보가 담겨 있음. Request 헤더 ex) 웹브라우저 정보 등Entity 헤더 : 메세지 바디에 들어가는 정보 메시지 본문은 엔티티 본문 전달하는데 사용되는데엔티티 본문에는 요청이나 응답에서 전달할 실제 데이터가 들어간다. 엔티티 헤더는 엔티티 본문의 데이터를 해석할 수 있는 정보를 제공한다.ex) 데이터 유형(html, json), 데이터 길이, 압축 정보 ※ 엔티티 : 데이터의 집합 이전 기준이 바뀜 엔티티 용어 사라지고 -> 표현 용어가 생김Representation(표현) = representation Metadata(표현 메타 데이터) + Representation Data(표현 데이터) - 메세지 본문을 통해 표현 데이터를 ..
-
(HTTP) 14 - HTTP 상태 코드 (2xx, 3xx, 4xx, 5xx)개발/HTTP 2024. 11. 1. 10:14
■ 2xx 성공 코드 200 : 요청에 대한 성공 201 : 요청 성공해서 새로운 리소스 생성 서버에서 신규 리소스 URI 만들고,응답의 Location 에 새롭게 생긴 리소스 경로 넣어준다. 202 : 요청이 접수되었으나 처리가 완료되지 않음 (잘 사용은 안함)배치 처리 같은 곳에서 사용ex) 요청 접수 후 1시간 뒤에 배치 프로세스가 요청 처리 204 : 서버가 요청을 성공적으로 수행했지만, 응답 페이로드 본문에 보낼 데이터가 없음 ex) 웹 문서 편집기에서 save 버튼 save 버튼 결과로 아무 내용 없어도 된다.save 버튼 눌러도 같은 화면 유지해야 한다.결과 내용이 없어도 204 메시지(2xx) 만으로 성공 인식할 수 있다. ■ 3xx 리다이렉션 요청을 완료하기 위해 유저 에이전트..
-
(HTTP) 13 - HTTP API 설계 예시 (문서, 컬렉션, 스토어, 컨트롤 URI)개발/HTTP 2024. 10. 31. 16:58
/members 를 컬렉션이라 부른다. 컬렉션 아래 하위 멤버 아이디를 넣어준다. PATCH : 회원 데이터 수정 PUT : 게시글 수정 (전체 수정)POST : 애매하면 POST POST 등록 시 서버에서 리소스 URI 결정하고 만들어줌 * 컬렉션- 서버가 관리하는 리소스 디렉토리- 서버가 리소스의 URI 생성하고 관리- 여기서 컬렉션은 /members 새로운 파일 등록 (기존 파일 덮어쓰기) PUT 은 클라이언트가 리소스 URI 알고 있어야 한다. 클라이언트가 직접 리소스 URI 지정한다. * 스토어(Store)- 클라이언트가 관리하는 리소스 저장소- 클라이언트가 리소스 URI 알고 관리- 여기서 스토어는 /files ■ HTML FORM 사용- GET, POST 만 지원- AJAX 같은 기..
-
(HTTP) 12 - HTTP 메서드 활용개발/HTTP 2024. 10. 31. 14:01
■ 클라이언트에서 서버 데이터 전송1. 쿼리 파라미터를 통한 데이터 전송- GET- 정렬 필터(검색어)2. 메시지 바디를 통한 데이터 전송- POST, PUT, PATCH- 회원가입, 상품 주문, 리소스 등록, 리소스 변경 ■ 정적 데이터 조회 쿼리 파라미터 없이 리소스 경로만 주로 적어준다. ■ 동적 데이터 조회 (검색어 입력) 쿼리 파라미터를 기반으로 Key Value 로 꺼내서 정렬 필터해서 결과를 동적으로 생성해준다. ■ HTML Form 데이터 전송 컨텐트 타입 application/x-www-form-urlencoded 보내기마치 쿼리 파라미터 처럼, key value 스타일로 데이터 만들고 http 바디에 넣고 전송해준다. GET 으로 했을 경우 메시지 바디를 안쓰기 때문에 해당 ..
-
(HTTP) 11 - HTTP 메서드 속성 (안전, 멱등, 캐시가능)개발/HTTP 2024. 10. 31. 13:32
■ HTTP 메서드 속성 3가지- 안전 (Safe Methods)- 멱등 (Idempotent Methods)- 캐시가능 (Cacheable Methods) ■ 안전 (Safe Methods) 안전하다는 것은 호출해도 리소스 변경하지 않는다는 것이다. GET 은 단순 조회이므로 안전하다.DELETE, PUT, PATCH 안전하지 않다. (변경이 있음) ■ 멱등 (Idempotent Methods) 몇 번 호출하든 결과가 똑같은 것PUT 의 경우 같은 요청을 하면 몇 번을 하든 최종 결과는 같다.DELETE 도 삭제하면 계속 삭제된 결과 똑같음POST 는 두 번 호출하면 두 번 결제한다 -> 결과 같지 않음 (멱등하지 않음) 멱등하기 때문에 같은 요청을 해도 된다.즉 서버 응답 못 줬을 때 클라이언트가..
-
(HTTP) 10 - HTTP 메서드 (GET, POST, PUT, PATCH, DELETE)개발/HTTP 2024. 10. 31. 10:56
■ API URI 고민 중요한 것은 리소스 식별이다. * 리소스란?- 회원 등록, 수정, 조회가 리소스가 아님- 회원이라는 개념 자체가 리소스* 리소스 식별 방법- 회원 등록하고 수정 조회하는 것을 모두 배제- 회원이라는 리소스만 식별하면 된다 -> 회원 리소스를 URI 에 매핑 리소스만 가지고 URI 를 만들면 모두 URI 가 동일하게 만들어진다. 구분 방법이 필요해진다. - 리소스와 행위를 분리해야 한다.- URI 는 리소스만 식별- 리소스와 해당 리소스를 대상으로 하는 행위를 분리한다.ex) 리소스 : 회원행위 : 조회, 등록, 삭제, 변경- 리소스는 명사, 행위는 동사 ■ HTTP 메서드 종류* 주요 메서드- GET : 리소스 조회- POST : 요청 데이터 처리, 주로 등록에 사용- P..
-
(HTTP) 9 - HTTP 메시지개발/HTTP 2024. 10. 31. 09:38
HTTP 메시지 구조는 4가지로 구분된다.1. start-line (시작 라인)2. header (헤더)3. empty line (공백 라인)4. message body (메세지 바디) ■ 요청 메시지1. start-line (시작 라인) : 메서드 + 경로값 + 쿼리 + HTTP 버전2. header (헤더) : 호스트명3. empty line (공백 라인) ※ 전달할 값 있다면 요청 메시지도 body 본문 가질 수 있다. ■ 응답 메시지1. start-line (시작 라인) : HTTP 버전 + 상태 코드값2. header (헤더) : Content-Type + 문자 형태 + 데이터 양3. empty line (공백 라인)4. message body (메세지 바디) : 필요한 HTTP 응답 메시지 ..