Тело запроса для метода Post в Spring Controller - PullRequest
0 голосов
/ 19 апреля 2019

Мне нужно реализовать конечную точку поста, которая принимает объект (json). Но некоторые параметры в объекте являются необязательными. Поэтому, когда я пытаюсь сделать вызов API, он не сопоставляется с соответствующим методом.

Показывалось Страница не найдена Ошибка: 404

Тело запроса, которое я отправляю, содержит только два поля, остальные необязательны.

Пойо для объекта

public class Post {
  private String owner;

  private String activity;

  private Boolean edited;

  private String clientApp;

  private String serviceProvider;

  private long id;

  private Text text;

  public static class Text {

    private String text;

    public String getText() {
      return text;
    }

    public void setText(String text) {
      this.text = text;
    }
  }

  public String getOwner() {
    return owner;
  }

  public void setOwner(String owner) {
    this.owner = owner;
  }

  public String getActivity() {
    return activity;
  }

  public void setActivity(String activity) {
    this.activity = activity;
  }

  public Boolean getEdited() {
    return edited;
  }

  public void setEdited(Boolean edited) {
    this.edited = edited;
  }

  public String getClientApp() {
    return clientApp;
  }

  public void setClientApp(String clientApp) {
    this.clientApp = clientApp;
  }

  public String getServiceProvider() {
    return serviceProvider;
  }

  public void setServiceProvider(String serviceProvider) {
    this.serviceProvider = serviceProvider;
  }

  public long getId() {
    return id;
  }

  public void setId(long id) {
    this.id = id;
  }

  public Text getText() {
    return text;
  }

  public void setText(Text text) {
    this.text = text;
  }

}

Пружинный контроллер:

@RequestMapping(method = RequestMethod.POST, value="/publish/post",consumes = MediaType.APPLICATION_JSON_VALUE)
    public String publish(
      @RequestBody Post map) {
      logger.info("Post method")
      return "Completed";
    }

Команда Curl:

curl -X POST \
  http://localhost:4569/rest/publish/post \
  -H 'Content-Type: application/json' \  
  -d '{
    "owner": "Owner of the Company",
    "text": {
        "text": "Png new image"
    }
}'

Полезная нагрузка

{
"owner": "Owner of the Company",
"text": {
    "text": "Png new image"
}

}

Контроллер покоя:

@RestController
@RequestMapping("/rest")
public class SocialController {

    private static final Logger logger = LoggerFactory.getLogger(SocialController.class);

    @RequestMapping(method = RequestMethod.POST, value="/publish/post",consumes = MediaType.APPLICATION_JSON_VALUE)
    public String publish(
      @RequestBody Post map) {
      logger.info("Post method")
      return "Completed";
    }
}

1 Ответ

0 голосов
/ 19 апреля 2019

В вашем URL отсутствует корень приложения http://localhost:4569/[App-name]/rest/publish/post

Необязательные поля в Pojo не создают проблем при вызове остальных методов.

...