[Web] 모든 개발자를 위한 HTTP 웹 기본 지식 - 강의 정리 - 3

JJAM·2022년 9월 7일
0
post-thumbnail

📖 HTTP 메서드 활용

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

🖋️ 정적 데이터 조회

  • ex) 이미지, 정적 텍스트 문서
  • 쿼리 파라미터 없이 리소스 경로로 단순하게 조회
  • GET 사용

🖋️ 동적 데이터 조회

  • ex) 검색, 게시판 목록에서 정렬 필터(검색어)
  • 쿼리 파라미터 사용해서 데이터 전달
  • GET 사용

🖋️ HTML Form을 통한 데이터 전송

POST - 저장
메시지 바디를 통해 전송
ex) 회원 가입, 상품 주문, 데이터 변경

GET - 조회
쿼리 파라미터를 통해 전송

🖋️ HTTP API를 통한 데이터 전송

  • ex) 회원 가입, 상품 주문, 데이터 변경
  • POST, PUT, PATCH 사용 (메시지 바디)
  • GET 사용 - 조회 (쿼리 파라미터)

📒 HTTP API 설계 예시

🖋️ API 설계(컬렉션) - POST 기반 등록

회원 목록 /members -> GET
회원 등록 /members -> POST
회원 조회 /members/{id} -> GET
회원 수정 /members/{id} -> PATCH, PUT, POST
회원 삭제 /members/{id} -> DELETE

컬렉션(Collection)

  • 서버가 관리하는 리소스 디렉토리
  • 서버가 리소스의 URI를 생성하고 관리
  • /members

🖋️ API 설계(스토어) - PUT 기반 등록

파일 목록 /files -> GET
파일 조회 /files/{filename} -> GET
파일 등록 /files/{filename} -> PUT
파일 삭제 /files/{filename} -> DELETE
파일 대량 등록 /files -> POST

스토어(Store)

  • 클라이언트가 관리하는 리소스 저장소
  • 클라이언트가 리소스의 URI를 알고 관리
  • /files

🖋️ HTML FORM 사용

회원 목록 /members -> GET
회원 등록 폼 /members/new -> GET
회원 등록 /members/new, /members -> POST
회원 조회 /members/{id} -> GET
회원 수정 폼 /members/{id}/edit -> GET
회원 수정 /members/{id}/edit, /members/{id} -> POST
회원 삭제 /members/{id}/delete -> POST

HTML FORM

  • GET, POST만 지원하므로 제약이 있음
  • AJAX 같은 기술을 사용해서 해결 가능
  • POST의 /new, /edit, /delete가 컨트롤 URI

📖 HTTP 상태코드

📒 HTTP 상태코드 소개

상태 코드
클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능

📒 2XX - 성공

200 OK

요청 성공
ex) GET 페이지 요청

201 Created

요청 성공해서 새로운 리소스가 생성됨
ex) POST 요청하여 리소스 생성

202 Accepted

요청이 접수되었으나 처리가 완료되지 않았음
ex) 요청 접수 후 1시간 뒤에 배치 프로세스가 요청을 처리함

204 No Content

서버가 요청을 성공적으로 수행했지만, 응답 페이로드 본문에 보낼 데이터가 없음
ex) 웹 문서 편집기에서 save 버튼

📒 3XX - 리다이렉션

요청을 완료하기 위해 유저 에이전트의 추가 조치 필요

🖋️ 영구 리다이렉션 - 특정 리소스의 URI가 영구적으로 이동

  • 리소스의 URI가 영구적으로 이동 -> 원래의 URL를 사용X, 검색 엔진 등에서도 변경 인지
  • ex) GET으로 과거 이벤트 페이지에 들어올 때, 현재 이벤트 페이지로 자동 리다이렉트

301 Moved Permanently

리다이렉트시 요청 메서드가 GET으로 변하고, 본문이 제거될 수 있음(MAY)

308 Permanent Redirect

301과 기능은 같음
리다이렉트시 요청 메서드와 본문 유지(처음 POST를 보내면 리다이렉트도 POST 유지)

🖋️ 일시 리다이렉션 - 일시적인 변경

  • 리소스의 URI가 일시적으로 변경 -> 검색 엔진 등에서 URL을 변경하면 안됨
  • ex) POST로 주문후에 새로 고침으로 인한 중복 주문 방지

302 Found

리다이렉트시 요청 메서드가 GET으로 변하고, 본문이 제거될 수 있음(MAY)

307 Temporary Redirect

302와 기능은 같음
리다이렉트시 요청 메서드와 본문 유지(요청 메서드를 변경하면 안된다. MUST NOT)

303 See Other

302와 기능은 같음
리다이렉트시 요청 메서드가 GET으로 변경

🖋️ 특수 리다이렉션 - 결과 대신 캐시를 사용

304 Not Modified

클라이언트에게 리소스가 수정되지 않았음을 알려준다. 따라서 클라이언트는 로컬PC에 저장된 캐시를 재사용 (캐시로 리다이렉트)

📒 4XX - 클라이언트 오류, 5XX - 서버 오류

🖋️ 4XX - 클라이언트 오류

클라이언트의 요청에 잘못된 문법등으로 서버가 요청을 수행할 수 없음

400 Bad Request

클라이언트가 잘못된 요청을 해서 서버가 요청을 처리할 수 없음
ex) 요청 구문, 메시지 등 오류

401 Unauthorized

클라이언트가 해당 리소스에 대한 인증(Authentication)이 필요함

403 Forbidden

서버가 요청을 이해했지만 승인을 거부함
ex) 접근 권한이 불충분한 경우

404 Not Found

요청 리소스를 찾을 수 없음

🖋️ 5XX - 서버 오류

500 Internal Server Error

서버 문제로 오류 발생, 애매하면 500 오류

503 Service Unavailable

서비스 이용 불가


지금까지 김영한 - 모든 개발자를 위한 HTTP 웹 기본 지식 (유료강의) 강의를 참고하여 HTTP 메서드 활용, HTTP 상태코드 에 대해 공부하였다.

profile
☘️

0개의 댓글