3
在我們的REST-API中,我們需要具備多租戶功能。對於achiving此所有其餘控制器子類的公共REST控制器,其定義了一個請求映射前綴和如下暴露出一個模型屬性在@ModelAttribute註釋方法內自動記錄@PathVariable註釋參數
@RequestMapping(path = "/{tenantKey}/api")
public class ApiController {
@ModelAttribute
public Tenant getTenant(@PathVariable("tenantKey") String tenantKey) {
return repository.findByTenantKey(tenantKey);
}
}
衍生控制器利用該模型在其請求映射方法屬性:
@RestController
public class FooController extends ApiController {
@RequestMapping(value = "/foo", method = GET)
public List<Foo> getFoo(@ApiIgnore @ModelAttribute Tenant tenant) {
return service.getFoos(tenant);
}
}
這個終結點在swagger-ui中得到很好的記錄。我使用GET映射爲路徑/{tenantKey}/api/foo
記錄了一個端點。
我的問題是,{tenantKey}路徑變量沒有記錄在swagger-ui中作爲參數。在swagger參數部分根本不呈現。如果我向控制器方法添加一個字符串參數,用@PathVariable("tenantKey)
註釋它一切都很好,但我不想在我的控制器方法中使用tenantKey
參數,因爲已解析的租戶已作爲模型屬性提供。
所以我的問題是:有沒有辦法做到從@ModelAttriute
註釋的方法ApiController
記錄在此設置swagger-ui?
項目,安裝程序
- 彈簧啓動(1.4.2)
- springfox-swagger2(2.6.1)
- springfox-招搖的UI(2.6.1)
感謝您的回答。我配置了一個全局路徑變量,這完全解決了我的問題。 Btw:'getTenant'方法不被視爲請求映射。它沒有以任何方式記錄,但這是我期望的行爲,因爲它只能在內部工作,並且不會對REST API產生任何影響。 –