Несколько объектов Java на одной конечной точке - PullRequest
0 голосов
/ 17 сентября 2018

Вместо построения оператора case для моего Spring Boot Rest Controller я хочу, чтобы Spring использовал правильную конечную точку.Я даже не уверен, что это возможно, но я надеюсь, что вселенная может спасти меня.

  @PostMapping("/endpoint")
    public String one(Greeting greet) {
        return "Greeting Posted";

    }

    @PostMapping("/endpoint")
    public String two(Address addr) {
        return "Address Posted";

    }

Текущая ошибка

Caused by: java.lang.IllegalStateException: Ambiguous mapping. Cannot map 'RController' method 
public java.lang.String com.example.controller.RController.two(com.example.model.Address)
to {[/endpoint],methods=[POST]}: There is already 'RController' bean method
public java.lang.String com.example.controller.RController.one(com.example.model.Greeting) mapped.

1 Ответ

0 голосов
/ 18 сентября 2018

Это не возможно. Это неоднозначно.

В качестве хорошей практики, если 2 ресурса будут обрабатывать данные по-разному, вы должны создать разные конечные точки для каждого из них.

Или возможный обходной путь для вас, он создает объект ViewModel и обрабатывает его всего одним методом.

public class GreetingAddressVM {

    private Address address;

    private Greeting greeting;

}

Я бы предпочел создавать разные сопоставления для каждого действия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...