Zuulフィルタを使用して動的ルーティングを実行しようとしています。私はSpring Bootで動作するアプリケーションを持っています。このアプリケーションは2つのサービスを公開します。このアプリケーションのリダイレクトがZuulとスプリングブートで動作しない
@PostMapping("/update")
public String updateBook(Book book) {
return " Book Updated";
}
@PostMapping("/add")
public String addBook(Book book) {
return " Book Added";
}
Application.propertiesは私zuulフィルタにおいて
spring.application.name=book
server.port=8090
ですが、私は/更新または/のいずれかが何らかのロジックに基づいて、追加するすべての要求をリダイレクトしています。
ズールの構成は以下の通りです。リダイレクトが私は
curl -i -X POST -H "Content-Type:application/json" -d "{\"id\":\"1\", \"name\":\"Book1\", \"type\":\"update\"}" http://localhost:8080/books/add
を起動すると、私はそれが/更新サービスにリダイレクトするべき期待ZuulFilter
@Override
public Object run() {
RequestContext context = RequestContext.getCurrentContext();
String requestBody = CharStreams.toString(context.getRequest().getReader());
Gson gson = new Gson();
Book book = gson.fromJson(requestBody, Book.class);
if (book.getType().equals("update")) {
context.setRouteHost(new URL("http://localhost:8090/update"));
}
else {
context.setRouteHost(new URL("http://localhost:8090/add"));
}
return null;
}
を拡張フィルタクラスにrun()
に以下のコードを使用して行われる
zuul.routes.books.url=http://localhost:8090
ribbon.eureka.enabled=false
server.port=8080
typeはupdateとして渡されるからです。しかし、私はそれが呼び出されている追加サービスであることがわかります。 setRouteHostコードが実行されていますが、リダイレクトは実行されていません。
紛失しているものがありますか?任意のポインタが評価されるだろう。
ありがとうございました