我想為具有公共前綴的此類路徑制作幾個控制器v1.0:
mysite.com/v1.0/usersmysite.com/v1.0/addressesmysite.com/v1.0/phones
但是,我也想保留沒有此前綴的控制器路徑,例如:
mysite.com/monitoring/ping
v1.0 將來可以更改前綴。所以,我不想為每個控制器復制這個前綴,而不是在更改前綴時迭代地更改它。
我可以寫這個屬性application.properties來添加一個前綴:
spring.data.rest.basePath=/api/v1
但在這種情況下,我將無法在沒有此前綴的地址上獲取請求。
問題是如何組織這樣的服務?
uj5u.com熱心網友回復:
你可以使用
@RestController
@RequestMapping("/v1")
public class SomeController {
在班級層面。然后這個類中的所有@RequestMapping 都可以使用前綴“/v1”訪問。在旁注中,我建議不要使用“。” 在您的網址中。
如果您不想在每個控制器中使用字串,我能想到的唯一選項如下。我試過了,它似乎對我來說作業得很好。
@RestController
@RequestMapping("/${your.custom.property.in.application.properties}")
public class SomeController {
your.custom.property.in.application.properties = 1
--> URL http://localhost:8080/1/test 向我發送了回復。URL 映射成功。除錯器在此控制器的斷點處停止
uj5u.com熱心網友回復:
我認為,您可以將所有具有相似前綴的控制器方法保留mysite.com/v1.0/.../...在同一類中,并且可以在類級別使用@RequestMapping(/v1.0). 例如
@RequestMapping(/v1.0)
class Class1
{
@GetMapping(/users)
public String method1()
{....}
.
.
.
@PostMapping(/addresses)
public String method2()
{....}
@GetMapping(/phones)
public String method3()
{....}
}
如果您不想將控制器方法保留在相同的前綴中,那么您可以創建另一個類并且不要在類級別對其進行注釋。只用不同的前綴注釋所有控制器方法。
class Class2
{
@GetMapping(/monitoring/ping)
public String method1()
{....}
.
.
.
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/461380.html
