簡體   English   中英

如何在 spring-data-rest 鏈接中重寫應用程序的基礎 URL?

[英]How do I rewrite the app's base URL in spring-data-rest links?

我公司使用 API 網關,按如下方式轉換 URL,修改主機名和資源的基本路徑: https://apigateway.mycompany.com/myapp/foo -> https://myapp.mycompany.com/foo

在 Spring 數據 REST 中,應用程序想要使用https://myapp.mycompany.com/foo生成鏈接。 我如何自定義應用程序以強制它為所有rel屬性生成 API 網關鏈接?

我想更改鏈接的呈現方式,而不更改 myapp.mycompany.com 服務器上這些資源的實際路徑。 我查看了有關自定義rel的文檔部分,但它似乎並未涵蓋此用例。

我應該怎么辦?

如果 Spring MVC 知道您的負載均衡器/代理,它可以自動重寫 Spring 數據 REST 和您自己的控制器(使用MvcUriComponentsBuilder )中生成的 URL 以反映原始請求 URL,包括方案、端口等。

有一個名為ForwardedHeaderFilter的內置 Servlet 過濾器,它通過檢查眾所周知的轉發標頭(例如X-Forwarded-For )來為您處理此問題; 如果您使用的是 Spring Boot,您可以設置server.forward-headers-strategy = framework來注冊一個,或者您可以使用@Import(ForwardedHeaderFilter.class)創建一個 bean,然后 Boot 會將其應用於容器。 如果您在沒有引導的情況下使用 Spring MVC,請將此過濾器添加到您的 Servlet 配置中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM