В моем сценарии использования мне нужно проверить тело запроса (которое составляет JSON) и посмотреть, имеет ли элемент prticular определенное значение, если он имеет его, нужно перенаправить на какой-либо другой URL-адрес (все равно отличается в остальной части порта ) иначе маршрут к другому URL динамически.
До сих пор я пробовал это, но я не уверен, как передать эти URL-адреса маршрутизации динамически.
@Configuration
public class RouterConfig {
@Bean
public RouteLocator myRoutes(RouteLocatorBuilder builder, UriConfiguration uriConfiguration) {
String httpUri = "";
return builder.routes()
.route(p -> p
.path("/get")
.and()
.readBody(String.class, body -> {
JSONObject obj = new JSONObject(body);
if(obj.getString("channelId").equals("FOOD"))
{
uriConfiguration.setUrl("http://localhost:8441/food-score/v1/getFood");
return true;
}else if(obj.getString("channelId").equals("DOG_FOOD")){
uriConfiguration.setUrl("http://localhost:8442/food-score/v1/getDogFood");
return true;
}
})
.uri(uriConfiguration.getUrl()))
.build();
}
UriConfiguration class
@ConfigurationProperties
@Component
public class UriConfiguration {
private String url= "";
public String getUrl() {
return url;
}
public void setUrl(String httpbin) {
this.url = httpbin;
}
}
, когда я запускаю код выше, он говорит schema can not be empty
, но если я жестко кодирую url
, он работает, как бы Я передаю свой маршрутный URL-адрес динамически.
А также, пожалуйста, предложите, является ли этот подход идеальным для производства.
И я хотел бы настроить это в .yml
сам файл, есть ли способ сделать это ??
Заранее спасибо,