HTTP 전송방식과 상태코드

개나뇽·2024년 4월 7일
0

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

  • 쿼리 파라미터를 이용한 데이터 전송
    • 필터(검색어)를 이용한 정렬
    • GET
  • 메세지 바디를 이용한 데이터 전송
    • 회원가입, 상품주문등의 리소스 등록및 변경
    • POST, PUT, PATCH

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

  1. 정적 데이터 전송
- 리소스 경로로 단순 조회가 가능
- 이미지, 정적 텍스트등
  1. 동적 데이터 전송
- 주로 검색, 게시판 목록 정렬 필터(검색)에 사용
- 조회는 GET을 사용하며 쿼리 파라미터 사용해 데이터를 전달
  1. HTML FORM 전송
- GET과 POST만 지원
- Content-Type: application/x-www-form-urlencoded 사용해 전송 데이터를 url encoding 처리
ex)  abc김 -> abc%EA%B9%80
- Content-Type: multipart/form-data 파일 업로드 같은 바이너리 데이터 전송시 사용
  1. HTTP API
- 서버 To 서버로 백엔드 시스템 통신
- 웹 클라이언트(자바스크립트를 통한 통신(AJAX))
ex) React, Vue.js
- Content-Type: application/json을 주로 사용 (사실상 표준)
- POST, PUT, PATCH는 메세지 바디, GET은 쿼리 파라미터로 데이터 전달

HTTP 상태코드

상태 코드란?

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

종류

  • 1xx(Informational)
    요청이 처리되어 수신중, 거의 사용하지 않는다.
  • 2xx(Successful)
    요청이 정상 처리됨
  • 3xx(Redircetion)
    요청이 완료되려면 추가적인 행동이 필요
  • 4xx(Client Error)
    클라이언트 오류, 잘못된 문법으로 인한 오류
  • 5xx(Server Error)
    서버 오류, 서버가 요청을 정상처리하지 못함

세부 사항

  1. 2xx
  • 200 OK : 요청 성공
  • 201 Created : 리소스 생성
  • 202 Accepted : 요청이 완료되었으나 처리가 완료되지 않음(배치 처리에 사용, 예를 들면 요청이 1시간뒤에 처리됨)
  • 204 No Content : 서버가 요청 수행에 성공했으나, 응답 페이로드에 보낼 데이터가 없음
    ex) 웹 문서 편집기에서 save 버튼 : save 버튼의 결과로 아무 내용이 없어도 된다, save 버튼을 눌러도 같은 화면을 유지해야 한다.
  1. 3xx
  • 300~308이 존재하며(더 생생되어 많다)
  • 응답 결과에 Location헤더가 있다면 자동으로 Location위치로 이동
영구 리다이렉션(301, 308)
: 리소스의 URI가 영구적을 이동

일시 리다이렉션(302, 303, 307)
: 리소스의 URI가 일시적인 변경,PRG패턴

특수 리다이렉션(304)
: 결과 대신 캐시를 사용
  • PRG 패턴(POST/REDIRECT/GET)
PRG 패턴이 사용되는 예를 보면 주로 주문후에 새로고침을 했을경우가 있다.
주문 완료(POST)후 새로고침(POST)을 할 경우 새로고침은 재요청이기에 중복주문이 될수가 있다.
그래서 이를 일시 리다이렉트를 이용해 새로 고침시 결과화면만을 GET으로 죄하는것으로 변경하는것이다.

사용 전

사용 후

참고 자료
모든 개발자를 위한 HTTP 웹 기본 지식

profile
정신차려 이 각박한 세상속에서!!!

0개의 댓글