Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

개발자되기 프로젝트

HTTP 요청 데이터 - API 메시지 바디 - JSON 본문

인프런/[인프런] 스프링 MVC 1

HTTP 요청 데이터 - API 메시지 바디 - JSON

Seung__ 2021. 9. 8. 21:47

1. HTTP 요청 데이터 - API 메시지 바디 - JSON


HTTP API에서 주로 사용하는 JSON 형식으로 데이터를 전달해보자.

 

 

 

2. JSON형식 전송


  • POST http://localhost:8080/request-body-json
  • content-type: application/json
  • message body: {"username": "hello", "age": 20}
  • 결과: messageBody = {"username": "hello", "age": 20}

 

 

3. JSON형식 파싱 추가


  • JSON형식으로 파싱할 객체를 생성
@Getter @Setter
public class HelloData {
    
    private String username;
    private int age;

}

 

 

4. JSON 받기.


@WebServlet(name = "RequestBodyJsonServlet", urlPatterns = "/request-body-json")
public class RequestBodyJsonServlet extends HttpServlet {

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        ServletInputStream inputStream = request.getInputStream();

        String messageBody = StreamUtils.copyToString(inputStream, StandardCharsets.UTF_8);

        System.out.println("messageBody = " + messageBody);
    }
}

messageBody = {
    "username": "hello",
    "age": 20
}

 

 

5. json -> 객체


  • JSON 결과를 파싱해서 사용할 수 있는 자바 객체로 변환하려면 Jackson, Gson 같은 라이브러리 필요.
  •  스프링 부트로 Spring MVC를 선택하면 기본으로 Jackson 라이브러리( ObjectMapper ) 제공함.
  • ObjectMapper를 사용하면 JSON<-->Object 변환 가능
@WebServlet(name = "RequestBodyJsonServlet", urlPatterns = "/request-body-json")
public class RequestBodyJsonServlet extends HttpServlet {

    //json <--> Object
    private ObjectMapper objectMapper = new ObjectMapper();

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        ServletInputStream inputStream = request.getInputStream();

        String messageBody = StreamUtils.copyToString(inputStream, StandardCharsets.UTF_8);

        System.out.println("messageBody = " + messageBody);

        HelloData helloData = objectMapper.readValue(messageBody, HelloData.class);
        System.out.println("helloData.username = " + helloData.getUsername());
        System.out.println("helloData.age = " + helloData.getAge());

        response.getWriter().write("ok~");
    }
}

helloData.username = hello
helloData.age = 20

 

6. GitHub : 210908 MessageBody, json


 

GitHub - bsh6463/MVC1

Contribute to bsh6463/MVC1 development by creating an account on GitHub.

github.com

 

Comments