복붙노트

[SPRING] 봄 휴식 JSON 포스트 null 값

SPRING

봄 휴식 JSON 포스트 null 값

나는 간단한 인사 응용 프로그램을하고 봄 휴식 엔드 포인트가 있습니다. 그것은 { "이름": "무언가를"} 동의해야하며, "안녕하세요, 무엇인가"를 반환합니다.

내 컨트롤러는 다음과 같습니다

@RestController
public class GreetingController { 

    private static final String template = "Hello, %s!";

    @RequestMapping(value="/greeting", method=RequestMethod.POST)
    public String greeting(Person person) {
        return String.format(template, person.getName());
    }

}

사람:

public class Person {

    private String name;

    public Person() {
        this.name = "World";
    }

    public Person(String name) {
        this.name = name;
    }

    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

내가 좋아하는 서비스에 요청을하면

curl -X POST -d '{"name": "something"}' http://localhost:8081/testapp/greeting

나는 얻다

Hello, World!

제대로 Person 객체로 JSON 직렬화 복원되지 않는 것 같습니다. 그것은 기본 생성자를 사용하고 이름을 설정하지 않는 것. 어떻게 JSON 입력을 받아들이는 REST에서 POST 요청을 만들려면 :이 발견? 그래서 제어부에 @RequestBody을 추가하는 시도하지만 '콘텐츠 유형'을 application / x-www-form-urlencoded를, 캐릭터 = UTF-8 '이 지원되지 않음 "에 대해 약간의 오차를 야기한다. 하며 @RequestBody를 제거하는 제안 @RequestBody MultiValueMap 지원되지 컨텐츠 유형 '문자셋 = UTF-8 응용 프로그램 / x-www-form-urlencoded를'나는 여기에 덮여 참조

나는 중 하나를 좋아하지 않는 기본 생성자를 제거하는 노력했다.

이 질문은 null 값을 JSON을 게시하면서 스프링 MVC가 null 반환하지만 위의와 충돌을 @RequestBody를 추가하지만, 제안하여 REST 웹 서비스를 커버 ...

해결법

  1. ==============================

    1.당신은 당신의 personparam를 설정하는 데 사용되어야 하는지를 봄을 이야기하는 @RequestBody를 설정해야합니다.

    당신은 당신의 personparam를 설정하는 데 사용되어야 하는지를 봄을 이야기하는 @RequestBody를 설정해야합니다.

     public Greeting greeting(@RequestBody Person person) {
        return new Greeting(counter.incrementAndGet(), String.format(template, person.getName()));
    } 
    
  2. ==============================

    2.당신은 @RequestMapping와 '생산'으로 설정해야합니다 (값 = "/ 인사"방법 = RequestMethod.POST)

    당신은 @RequestMapping와 '생산'으로 설정해야합니다 (값 = "/ 인사"방법 = RequestMethod.POST)

    코드 아래 사용

    @RequestMapping(value="/greeting", method=RequestMethod.POST, produces = { MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_XML_VALUE })
     public String greeting(@RequestBody Person person) {
            return String.format(template, person.getName());
        }
    
  3. from https://stackoverflow.com/questions/43373421/spring-rest-json-post-null-values by cc-by-sa and MIT license