Запросить строку [] + строку в виде Json из метода контроллера rest - PullRequest
0 голосов
/ 25 октября 2018

Я искал здесь решение, но не нашел ничего полезного для моего дела.

Моему Дао нужна String[] и одна String, поэтому я сделал это:

@RequestMapping(value = "/add", method = RequestMethod.POST, consumes = { "application/json" })
public void newRent(@RequestBody String[] isbn,String username) {
    rentService.newRent(isbn, username);
}

Теперь я пытаюсь сделать POST из Почтальона , вызывающего сопоставленную ссылку, но я продолжаю получать недопустимый метод (405).

Я много пробовал, это выглядит наилучшим способом, но все равно не работает.

[
 { {   "isbn":"123"},{"isbn":"1234"},
 { "username" : "zappa"}
]

или

{
  "isbn": ["123", "1234"],
  "username": "zappa"
}

Я что-то упустил?не могу понять это!

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Во-первых, это правильный JSON (другой неверен, отметьте здесь ):

{
  "isbn": ["123", "1234"],
  "username": "zappa"
}

Теперь, чтобы получить эти значения, вам нужно использовать@RequestBody вместе с некоторыми POJO , JavaBean или Map, чтобы получить значения правильно.Например, с картой это будет выглядеть так:

@RequestMapping(value = "/add", method = RequestMethod.POST, consumes = { "application/json" })
public void newRent(@RequestBody Map data) {
    rentService.newRent((String [])data.get("isbn"), data.get("username").toString());
}

С POJO это будет примерно так:

public class RentEntity {
    private String[] isbn;
    private String username;

    public String[] getIsbn() {
        return isbn;
    }

    public void setIsbn(String[] isbn) {
        this.isbn = isbn;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }
}

@RequestMapping(value = "/add", method = RequestMethod.POST, consumes = { "application/json" })
public void newRent(@RequestBody RentEntity data) {
    rentService.newRent(data.getIsbn(), data.getUsername());
}

Дополнительная информация

0 голосов
/ 25 октября 2018

Вы должны создать новую сущность Rent

public class Rent{public string[] isbn; public string username;}

Затем вы измените свой метод на:

 @RequestMapping(value = "/add", method = RequestMethod.POST, consumes = { "application/json" })
public void newRent(@RequestBody Rent rentRequest) {
    rentService.newRent(rentRequest.isbn, rentRequest.username);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...