Как установить несколько базовых путей для контроллеров Spring REST (например, общий базовый путь для одного или нескольких пакетов) - PullRequest
0 голосов
/ 25 мая 2018

У меня есть несколько конечных точек REST в моем приложении Spring Boot.В настоящее время мы используем JAX-RS / Apache CXF (используя аннотацию javax.ws.rs.Path в наших классах конечных точек Facade REST) ​​и в настоящее время осуществляем переход на Spring REST (MVC).Из-за большого количества классов конечных точек, у нас есть структура, подобная:

com.example.domain1.Facade1.java - @Path("facade1path)
com.example.domain1.Facade2.java - @Path("facade2path)
... (much more "Facade" classes in com.example.domain1 package)

com.example.domain2.Facade3.java - @Path("facade3path)
com.example.domain2.Facade4.java - @Path("facade4path)
... (much more "Facade" classes in com.example.domain2 package)

И у нас есть приложение, настроенное таким образом, что пути установлены на:

"/api/domain1/facade1path" -> Facade1.java
"/api/domain1/facade2path" -> Facade2.java
"/api/domain2/facade3path" -> Facade3.java
"/api/domain2/facade4path" -> Facade4.java

Со старым JAX-Конфигурирование RS / CXF, мы смогли достичь этого довольно элегантным способом, без необходимости повторять «/ api / domain1 /» или «/ api / domain2 /» во всех аннотациях @Path. Мы настроили несколько «jaxrs-server»элементы в определенной конфигурации CXF следующим образом:

<jaxrs:server id="Domain1Server" address="/api/domain1" basePackages="com.example.domain1" />
<jaxrs:server id="Domain2Server" address="/api/domain2" basePackages="com.example.domain2" />

И это работает: -)

Есть ли способ достичь чего-то похожего с Spring REST / MVC, не повторяя "api / domain1 "или" api / domain2 "в аннотациях в нескольких классах контроллеров -

@RequestMapping("api/domain1/facade1path"), @RequestMapping("api/domain1/facade2path"), и т. д .?

Не найдено каких-либо ресурсов, указывающих, что это как-то возможно сВесной пока что, может быть, это не возможно, но было бы неплохо, если бы кто-нибудь взломал, как это сделать: -)

Заранее спасибо, всем!

1 Ответ

0 голосов
/ 25 мая 2018

Создайте два класса Controller в Spring и установите baseUrl на уровне класса контроллера.

Первый будет выглядеть так:

@RestController
@RequestMapping("/api/domain1")
public class DomainOneController {

@RequestMapping("/facade1path"), 
@RequestMapping("/facade2path") ...
}

Второй будет выглядеть так:

@RestController
@RequestMapping("/api/domain2")
public class DomainTwoController {

@RequestMapping("/facade3path"), 
@RequestMapping("/facade4path") ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...