HttpRequest 메시지

HttpRequest 메시지의 내용

  POST /save HTTP/1.1
  Host: localhost:8080
  Content-Type: application/x-www-form-urlencoded
  username=kim&age=20
  • START LINE
    • HTTP 메소드
    • URL
    • 쿼리 스트링
    • 스키마, 프로토콜
  • 헤더
    • 헤더 조회
  • 바디
    • form 파라미터 형식 조회
    • message body 데이터 직접 조회

위는 간단한 예시이며, 실제로는 훨씬 더 많은 다양한 정보가 포함된다.

HttpServletRequest 객체의 메소드 예시

request.getMethod() = GET
request.getProtocal() = HTTP/1.1
request.getScheme() = http
request.getRequestURL() = http://localhost:8080/request-header
request.getRequestURI() = /request-header
request.getQueryString() = null
request.isSecure() = false

HttpRequest를 통해 데이터를 전달하는 방법

GET 방식의 Query Parameter

  • URL 뒤에 "?name=hansu&addr=seoul" 방식으로 전달
  • message body 없이 URL 쿼리 파라미터에 데이터 전달
  • header의 content-type이 null
    ex) 검색, 필터, 페이징

    HttpServletRequest.getParameter는 동일한 이름의 파라미터가 여러개일 경우, 첫번째 파라미터의 값을 반환해준다.
    중복된 파라미터명이 존재할 수 있을 경우, getParameterValues() 와 asIterator(), forEachRemaining()을 활용하도록 하자

POST 방식의 HTML Form

  • Header의 content-type이 application/x-www-form-urlencoded
  • message body에 쿼리 파라미터 형식으로 전달 name=hansu&addr=seoul
  • GET의 Query Parameter 방식과 포맷이 같기 때문에 HttpServletRequest.getParameter 를 통해 똑같이 접근할 수 있다.
    ex) 회원 가입, 상품 주문 등 HTML Form 사용해 작성된 데이터

    html 예시 코드

    <form action="/save" method="post">
      <input type="text" name="name" />
      <input type="text" name="addr" />
      <button type="submit">전송</button>
    </form>

    html 메시지

    POST /save HTTP/1.1
    Host: localhost:8080
    Content=Type: application/x-www-form-urlencoded
    name=hansu&addr=seoul

message body 활용

  • HTTP API에서 주로 사용. (Json, XML, text)
  • 데이터는 주로 Json
  • message body 사용시 HTTP Method는 POST, PUT, PATCH 사용

좋은 웹페이지 즐겨찾기