본문 바로가기

Web

(48)
[모든 개발자를 위한 HTTP 웹 기본 지식] 13.HTTP 헤더 - 일반 헤더 - 협상( 3/8 ) 협상( 콘텐츠 네고시에이션 ) 클라이언트가 선호하는 표현 요청 Accept: 클라이언트가 선호하는 미디어 타입 전달 Accept-Charset: 클라이언트가 선호하는 문자 인코딩 Accept-Encoding: 클라이언트가 선호하는 압축 인코딩 Accept-Language: 클라이언트가 선호하는 자연 언어 협상 헤더는 요청시에만 사용 1. Accept-Language 적용 전 적용 후 복잡한 예시 한국어로 왔지만 우리는 지원안하니까 default인 독일어로 응답 1) 협상과 우선순위 1 Quality Values( q ) Quality Values( q )값 사용 0 ~ 1, 클수록 높은 우선순위 생략하면 1 Accept-Language: ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7 1..
[모든 개발자를 위한 HTTP 웹 기본 지식] 12.HTTP 헤더 - 일반 헤더 - 표현( 2/8 ) 표현 Content-Type: 표현 데이터의 형식 Content-Encoding: 표현 데이터의 압축 방식 Content-Language: 표현 데이터의 자연 언어 Content-Length: 표현 데이터의 길이 표현 헤더는 전송, 응답 둘다 사용 1. Content-Type 표현 데이터의 형식 설명 미디어 타입, 문자 인코딩 ex. text/html; charset=utf-8 apllication/json image/png 2. Content-Encoding 표현 데이터의 인코딩 표현 데이터를 압축하기 위해 사용 데이터를 전달하는 곳에서 압축 후 인코딩 헤더 추가 데이터를 읽는 쪽에서 인코딩 헤더의 정보로 압축 해제 ex. gzip deflate identity 3. Content-Language 표현..
[모든 개발자를 위한 HTTP 웹 기본 지식] 11.HTTP 헤더 - 일반 헤더 - 개요( 1/8 ) HTTP 헤더 1. 용도 2. 분류 - RFC2616( 과거 ) HTTP BODY 1. message body - RFC2616( 과거 ) HTTP 표준 변화 1999년 RFC2616 : 폐기 처리 2014년 RFC7230 ~ 7235 등장 RFC723x 변화 엔티티( Entity ) -> 표현( Representation ) Representation = representation Metadata + Representation Data 표현 = 표현 메타데이터 + 표현 데이터 HTTP BODY message body - RFC7230( 최신 ) 출처 https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/da..
[모든 개발자를 위한 HTTP 웹 기본 지식] 10.HTTP 상태코드 - 4xx, 5xx ( 2/2 ) 상태 코드 클라이언트가 보낸 요청의 처리 상태를 응답해서 알려주는 기능 1xx ( Informational ) : 요청이 수신되어 처리중 2xx ( Successful ) : 요청 정상 처리 3xx ( Redirection ) : 요청을 완료하려면 추가 행동이 필요 4xx ( Client Error ) : 클라이언트 오류, 잘못된 문법 등으로 서버가 요청을 수행할 수 없음 5xx ( Server Error ) : 서버 오류, 서버가 정상 요청을 처리하지 못함 만약 모르는 상태 코드가 나타나면? 클라이언트가 인식할 수 없는 상태코드를 서버가 반환하면? 클라이언트는 상위 상태코드로 해석해서 처리 미래에 새로운 상태 코드가 추가되어도 클라이언트를 변경하지 않아도 됨 ex. 299 ??? -> 2xx ( Suc..
[모든 개발자를 위한 HTTP 웹 기본 지식] 9.HTTP 상태코드 - 공통, 1xx, 2xx, 3xx ( 1/2 ) 상태 코드 클라이언트가 보낸 요청의 처리 상태를 응답해서 알려주는 기능 1xx ( Informational ) : 요청이 수신되어 처리중 2xx ( Successful ) : 요청 정상 처리 3xx ( Redirection ) : 요청을 완료하려면 추가 행동이 필요 4xx ( Client Error ) : 클라이언트 오류, 잘못된 문법 등으로 서버가 요청을 수행할 수 없음 5xx ( Server Error ) : 서버 오류, 서버가 정상 요청을 처리하지 못함 만약 모르는 상태 코드가 나타나면? 클라이언트가 인식할 수 없는 상태코드를 서버가 반환하면? 클라이언트는 상위 상태코드로 해석해서 처리 미래에 새로운 상태 코드가 추가되어도 클라이언트를 변경하지 않아도 됨 ex. 299 ??? -> 2xx ( Suc..
[모든 개발자를 위한 HTTP 웹 기본 지식] 8.HTTP 메서드 활용( 2/2 ) HTTP API 설계 예시 HTTP API - 컬렉션 POST 기반 등록 ex. 회원 관리 API 제공 서버가 리소스 URI 결정 HTTP API - 스토어 PUT 기반 등록 ex. 정적 컨텐츠 관리, 원격 파일 관리 클라이언트가 리소스 URI 결정 HTTP FORM 사용 웹 페이지 회원 관리 GET, POST만 지원( 순수 HTML + HTML form 사용 ) 1. HTTP API - 컬렉션 회원 관리 시스템 설계 - API 설계 - POST 기반 등록 ※ 리소스를 식별해야한다. 행위로 식별하면 안된다. 회원 목록 /members -> GET 회원 등록 /members -> POST 회원 조회 /members/{id} -> GET 회원 수정 /members/{id} -> PATCH, PUT, POST..
[모든 개발자를 위한 HTTP 웹 기본 지식] 7.HTTP 메서드 활용( 1/2 ) 클라이언트에서 서버로 데이터 전송 데이터 전달방식은 크게 2가지가 있다. 쿼리 파라미터를 통한 데이터 전송 GET 주로 정렬 필터( 검색어 ) 메시지 바디를 통한 데이터 전송 POST, PUT, PATCH 회원 가입, 상품 주문, 리소스 등록, 리소스 변경 4가지 예시상황으로 진행 1. 정적 데이터 조회 쿼리 파라미터 미사용 이미지, 정적 텍스트 문서 조회는 GET 사용 정적 데이터는 일반적으로 쿼리 파라미터 없이 리소스 경로로 단순하게 조회 가능 2. 동적 데이터 조회 쿼리 파라미터 사용 주로 검색, 게시판 목록에서 정렬 필터( 검색어 ) 조회 조건을 줄여주는 필터, 조회 결과를 정렬하는 정렬 조건에 주로 사용 조회는 GET 사용 GET은 쿼리 파라미터 사용해서 데이터를 전달 3. HTML Form 데..
[모든 개발자를 위한 HTTP 웹 기본 지식] 6.HTTP 메서드의 속성 3가지( 3/3 ) HTTP 메서드의 속성 3가지 1. 안전( Safe ) 호출해도 리소스를 변경하지 않는다. Q. 여러번 호출해서, 로그 같은 데이터가 쌓여서 장애가 발생한다면? A. 안전은 리소스만 고려한다. 2. 멱등( Idempotent ) f(f(x)) = f(x) 한번 호출하든 두 번 호출하든 100번 호출하든 결과는 똑같다. 멱등 메서드 GET : 한 번 조회하든, 두 번 조회하든 같은 결과가 조회된다. PUT : 결과를 대체한다. 따라서 같은 요청을 여러번 해도 최종 결과는 같다. DELETE : 결과를 삭제한다. 같은 요청을 여러번 해도 삭제된 결과는 똑같다. POST : 멱등이 아니다! 두 번 호출하면 같은 결제가 중복해서 발생할 수 있다. 활용 자동 복구 매커니즘 서버가 TIMEOUT 등으로 정상 응답을..