반응형

분류 전체보기 294

23. 표현

• Content-Type: 표현 데이터의 형식 (json인지 html인지 뭘로 보내주는지 알려줌) • Content-Encoding: 표현 데이터의 압축 방식 • Content-Language: 표현 데이터의 자연 언어 (표현 데이터가 한국어인지 영어인지) • Content-Length: 표현 데이터의 길이 • 표현 헤더는 전송, 응답 둘다 사용할 수 있다. Content-Type 표현 데이터의 형식 설명 • 미디어타입, 문자 인코딩• 미디어 타입, 문자 인코딩 • 예) • text/html; charset=utf-8 • application/json • image/png Content-Encoding 표현 데이터 인코딩 • 표현 데이터를 압축하기 위해 사용 • 데이터를 전달하는 곳에서 압축 후 인코딩..

22. HTTP 헤더 개요

HTTP 헤더 개요 용도 HTTP 전송에 필요한 모든 부가정보 예) 메시지 바디의 내용, 메시지 바디의 크기, 압축, 인증, 요청 클라이언트, 서버 정보, 캐시 관리 정보... 표준 해더가 너무 많음 필요시 임의의 헤더 추가 가능 - helloworld : hihi HTTP 헤더 분류 - RFC2616 (과거) 헤더 분류 • General 헤더: 메시지 전체에 적용되는 정보, 예) Connection: close • Request 헤더: 요청 정보, 예) User-Agent: Mozilla/5.0 (Macintosh; ..) • Response 헤더: 응답 정보, 예) Server: Apache • Entity 헤더: 엔티티 바디 정보, 예) Content-Type: text/html, Content-L..

21. 4XX - 클라이언트 오류 | 5XX - 서버 오류

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

20. 3XX - 리다이렉션2 | PRG

일시적인 리다이렉션 302, 307, 303 리소스의 URI가 일시적으로 변경되는것. 실무에서 정말 많이쓴다 따라서 검색엔진 등에서 URL을 변경하면 안됨 302 Found - 리다이렉트시 요청 메서드가 GET으로 변하고, 본문이 제거될 수 있음(MAY) 실무에선 대부분 302 많이 사용한다. 307 Temporary Redirect - 302와 기능은 같음 - 리다이렉트시 요청 메서드와 본문 유지 (요청 메서드를 변경하면 안된다. MUST NOT) 303 See Other - 302와 기능은 같음 - 리다이렉트시 요청 메서드가 GET으로 변경 PRG : Post/Redirect/Get 일시적인 리다이렉션 - 예시 POST로 주문후에 웹 브라우저를 새로고침하면? 새로고침은 다시 요청 중복 주문이 될 수있..

19. 3XX - 리다이렉션

리다이렉션 클라이언트가 서버에 요청 후 서버가 요청을 완료하려면 뭔가 추가적인 작업이 필요하다고 클라이언트한테 다시 요청 보내는것 3XX (Redirection) 요청을 완료하기 위해 유저 에이전트의 추가 조치 필요 300 - Multiple Choices 301 - Moved Permanently 302 - Found 303 - See Other 304 - Not Modified 307 - Temporary Redirect 308 - Permanent Redirect 300은 잘 안쓰고 301부터 308까지가 중요하다 리다이렉션 이해 웹 브라우저는 3XX 응답의 결과에 Location 헤더가 있으면 Location 위치로 자동이동 (리다이렉트) 클라이언트가 /event 경로로 입력 시 더이상 /even..

17. HTTP 상태코드

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

16. HTTP API 설계 예시

1. HTTP API - 컬렉션 - POST 기반 등록 - 예) 회원 관리 API 제공 - 서버가 리소스 URI 결정 2. HTTP API - 스토어 - PUT 기반 등록 - 예) 정적 컨텐츠 관리, 원격 파일 관리 - 클라이언트가 리소스 URI 결정 3. HTML FORM 사용 - 웹 페이지 회원 관리 - GET, POST만 지원 - 순수 HTML + HTML form 사용 URI를 식별할때 항상 리소스를 식별해야지 다른걸 식별하면 안됨 조회하다, 등록하다.. 등은 HTTP 메서드로 구분해야지 URI로 구분해선 안됌 회원 관리 시스템 POST - 신규 자원 등록 특징 (컬렉션) 1. 클라이언트는 등록될 리소스의 URI를 모른다. - 회원등록 /members → POST - POST /members - ..

15. 클라이언트에서 서버로 데이터 전송

데이터 전달 방식은 크게 2가지 1. 쿼리 파라미터를 통한 데이터 전송 - GET - 주로 정렬 필터 (검색어) 2. 메시지 바디를 통한 데이터 전송 - POST, PUT, PATCH - 회원가입, 상품주문, 리소스 등록, 리소스 변경 4가지 상황 정적 데이터 조회 - 이미지, 정적 텍스트 문서 - 조회는 GET 사용 - 정적 데이터는 일반적으로 쿼리파라미터 없이 리소스 경로로 단순하게 조회 가능 동적 데이터 조회 - 주로 검색, 게시판 목록에서 정렬 필터 (검색어) - 조회 조건을 줄여주는 필터, 조회 결과를 정렬하는 정렬 조건에 주로 사용 - 조회는 GET 사용 - GET은 쿼리 파라미터 사용해서 데이터를 전달 HTML Form 데이터 전송 POST 전송 - 저장 GET 전송 - 저장 Multipar..

14. HTTP 메서드의 속성

HTTP 메서드의 속성 안전 (Safe Methods) 멱등 (Idempotent Methods) 캐시가능 (Cacheable Methods) 안전 Safe 호출해도 리소스를 변경하지 않는다. 호출했을때 변경이 일어나지 않는걸 안전하다한다. Q : 그래도 계속 호출해서, 로그 같은게 쌓여서 장애가 발생하면? A : 안전은 해당 리소스만 고려한다. 그런 부분까지 고려하지 않는다. 멱등 Idempotent f(f(x)) = f(x) 한번 호출하던 두번 호출하던 100번 호출하던 결과가 똑같다. 멱등 메서드 - GET : 한번, 두번 조회하던 같은 결과가 조회된다. - PUT : 결과를 대체한다. 따라서 같은 요청을 여러번 해도 최종결과는 같다. - DELETE : 결과를 삭제한다. 같은 요청을 여러번 해도 ..

반응형