강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

작성자 없음

작성자 정보가 삭제된 글입니다.

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

postman으로 /request-body-json-v1 호출시 500 error

작성

·

20

0

Json형태의 request 에서 아래 예제 그대로 진행했는데, 자꾸 500 error가 나와서요

java 24, springboot 2.5.5


@Slf4j @Controller public class RequestBodyJsonController { private ObjectMapper objectMapper = new ObjectMapper(); @PostMapping("/request-body-json-v1") public void requestBodyJsonV1(HttpServletRequest request, HttpServletResponse response) throws IOException { ServletInputStream inputStream = request.getInputStream(); String messageBody = StreamUtils.copyToString(inputStream, StandardCharsets.UTF_8); log.info("messageBody={}", messageBody); HelloData helloData = objectMapper.readValue(messageBody, HelloData.class); log.info("username={}, age={}", helloData.getUsername(), helloData.getAge()); response.getWriter().write("ok"); } }

 

[postman] 수행결과

{
    "timestamp": "2025-08-24T05:03:39.632+00:00",
    "status": 500,
    "error": "Internal Server Error",
    "path": "/request-body-json-v1"
}

 

[인텔리제이 로그]

2025-08-24T14:03:39.540+09:00 INFO 6552 --- [springmvc] [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'

2025-08-24T14:03:39.541+09:00 INFO 6552 --- [springmvc] [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 0 ms

2025-08-24T14:03:39.570+09:00 INFO 6552 --- [springmvc] [nio-8080-exec-1] h.s.b.request.RequestBodyJsonController : messageBody={"usernsme":"aaa", "age":20}

2025-08-24T14:03:39.620+09:00 ERROR 6552 --- [springmvc] [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception

com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "usernsme" (class hello.springmvc.basic.HelloData), not marked as ignorable (2 known properties: "username", "age"])

at [Source: REDACTED StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION disabled); line: 1, column: 14] (through reference chain: hello.springmvc.basic.HelloData["usernsme"])

at com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:61) ~[jackson-databind-2.19.2.jar:2.19.2]

at com.fasterxml.jackson.databind.DeserializationContext.handleUnknownProperty(DeserializationContext.java:1180) ~[jackson-databind-2.19.2.jar:2.19.2]

at com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:2244) ~[jackson-databind-2.19.2.jar:2.19.2]

at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1823) ~[jackson-databind-2.19.2.jar:2.19.2]

at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownVanilla(BeanDeserializerBase.java:1801) ~[jackson-databind-2.19.2.jar:2.19.2]

at

 

답변 1

1

안녕하세요, 인프런 AI 인턴입니다. 최지나님.

Postman으로 JSON 데이터를 전송할 때 500 에러가 발생하는 이유는 username 필드를 usernsme라고 오타가 난 상태로 요청을 보냈기 때문입니다. HelloData 클래스에 정의된 필드는 username이지만 전송하는 데이터의 필드명이 잘못 작성된 것을 확인할 수 있습니다.

해결 방법

  • JSON 필드명 수정: 아래와 같이 Postman 요청에서의 JSON 필드명을 올바르게 수정하시면 문제를 해결할 수 있습니다.
{
    "username": "aaa",
    "age": 20
}

추가 팁

  1. 오타 방지: JSON 데이터를 전송할 때에는 필드명을 정확히 확인하여 오타가 없도록 주의해야 합니다.
  2. 로그 확인: 서버 로그를 통해 에러 원인을 추적하면 많은 도움이 됩니다.
  3. Jackson 문제: Jackson 라이브러리는 매핑되지 않은 속성을 계속해서 디시리얼라이즈 하려 할 경우 예외를 발생시킵니다. 설정을 통해 lenient 모드로 전환하거나, Fallback으로 Unknown Property를 무시하도록 설정할 수 있습니다. 적절한 예외 처리를 추가하면 디버깅에 도움이 됩니다.

자세한 Jackson 활용에 대한 내용이 추가로 궁금하시다면 Jackson의 UnrecognizedPropertyException 관련 질의를 참고할 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기