“API를 보내는 방식의 기반이 되는 내용입니다. HTTP 요청 메시지의 메시지 바디에 내가 원하는 데이터를 직접 싣어서 서버에 전송을 합니다.”
HTTP API에서 주로 사용, JSON, XML, TEXT
데이터 형식은 주로 JSON 사용
사실상 JSON이 디펙토입니다. 레거시 프로젝트가 아니면 거의 JSON을 씁니다.
POST, PUT, PATCH
먼저 가장 단순한 텍스트 메시지를 HTTP 메시지 바디에 담아서 전송하고, 읽어봅시다.
HTTP 메시지 바디의 데이터를 InputStream을 사용해서 직접 읽을 수 있습니다.
package hello.servlet.basic.request;
import org.springframework.util.StreamUtils;
import javax.servlet.ServletException;
import javax.servlet.ServletInputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
@WebServlet(name = "requestBodyStringServlet", urlPatterns = "/request-body-string")
public class RequestBodyStringServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletInputStream inputStream = request.getInputStream(); //...1
String messageBody = StreamUtils.copyToString(inputStream, StandardCharsets.UTF_8); //...2
System.out.println("messageBody = " + messageBody);
response.getWriter().write("ok");
}
}
항상 바이트를 문자로 변환할 때는 어떤 인코딩인지 알려줘야합니다.
반대로 문자를 바이트로 변환할 때도 어떤 인코딩인지 알려줘야합니다.
요즘은 대부분 UTF-8을 사용합니다.
확인할 때는 Postman을 사용합시다.