Опубликовать запрос - весенняя загрузка [RequestBody] vs Asp.net [FromBody] - PullRequest
0 голосов
/ 14 декабря 2018

Я только что столкнулся с проблемой в весеннем загрузочном посте.У меня есть конечная точка API, которая принимает параметр String, как показано ниже:

@RequestMapping(method = RequestMethod.POST, value = "/products/add")
public RestMessage addProduct(@RequestBody String name) {
   //Code implementation here   
}

Когда я тестирую эту конечную точку API от почтальона, параметр name имеет совокупность как name = "\"value\"";

Мой запрос почтальона:

Postman Request

Я недавно мигрировал из .net, и если я сравниваю его сМетод Web API 2 Я бы имел реализацию в виде

[Route("products/add")]
public IHttpActionResult Post([FromBody]string name)
{
    //Code implementation here
}

И если бы я тестировал эту конечную точку из почтальона, то у меня было бы значение параметра name простая строка как name = "value".

Что нужно сделать, чтобы добиться такого же поведения в Spring Boot.Я понимаю, что Spring Boot рассматривает кавычки как строку, а не как часть json.

Если я отправляю запрос в таком формате enter image description here

Это результат This is what happening

Обновлено : Итак, после нескольких испытаний я обнаружил, что ASP.net рассматривает строковое значение почтальона как строковый объект, он игнорирует кавычки для вас.Но при загрузке в Spring, если у вас есть один параметр в виде строки, и вы должны передать его в @RequestBody, не переводите его в строку.Пример запроса, который работает для меня как:

Working request

Так что не нужно беспокоиться о знаке креста в почтальоне.

1 Ответ

0 голосов
/ 14 декабря 2018

Вам необходимо создать POJO.

Class NameDTO {
    private String name;
    public void setName(String name) {
        this.name = name;
    }
    public String getName() {
       return this.name;
    }
}

@ RequestBody NameDTO nameDTO

Теперь вы можете получить имя, используя

name = nameDTO.getName
...