在@ModelAttribute 注释方法中自动记录@PathVariable 注释参数
Automatically document @PathVariable annotated parameters within @ModelAttribute annotated methods
在我们的 REST-API 中,我们需要具备多租户能力。为了实现这一点,所有其余控制器子类化了一个公共 REST 控制器,该控制器定义了一个请求映射前缀并公开了一个模型属性,如下所示
@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 中得到了很好的记录。我得到一个记录了路径 /{tenantKey}/api/foo
.
的 GET 映射的端点
我的问题是,{tenantKey} 路径变量未作为参数记录在 swagger-ui 中。 swagger 中的参数部分根本没有呈现。如果我向控制器方法添加一个字符串参数,用 @PathVariable("tenantKey)
注释它一切都很好,但我不想在我的控制器方法中使用 tenantKey
参数,因为已解析的租户已经作为模型属性可用.
所以我的问题是:有没有办法从 ApiController
中记录的 @ModelAttriute
注释方法中获取 @PathVariable
在此设置中的 swagger-ui 中?
项目设置是
- Spring-引导 (1.4.2)
- springfox-swagger2 (2.6.1)
- springfox-swagger-ui (2.6.1)
这当然是可能的。当前不支持方法的模型属性。相反,您可以采用以下方法。
- 用
@ApiIgnore
标记 getTenant
方法(不确定它是否被视为请求映射。)
- 在您的摘要中,您可以添加
tenantKey
全局路径变量(到所有端点)。由于这是一个多租户应用程序,因此假设这适用于所有端点。
在我们的 REST-API 中,我们需要具备多租户能力。为了实现这一点,所有其余控制器子类化了一个公共 REST 控制器,该控制器定义了一个请求映射前缀并公开了一个模型属性,如下所示
@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 中得到了很好的记录。我得到一个记录了路径 /{tenantKey}/api/foo
.
我的问题是,{tenantKey} 路径变量未作为参数记录在 swagger-ui 中。 swagger 中的参数部分根本没有呈现。如果我向控制器方法添加一个字符串参数,用 @PathVariable("tenantKey)
注释它一切都很好,但我不想在我的控制器方法中使用 tenantKey
参数,因为已解析的租户已经作为模型属性可用.
所以我的问题是:有没有办法从 ApiController
中记录的 @ModelAttriute
注释方法中获取 @PathVariable
在此设置中的 swagger-ui 中?
项目设置是
- Spring-引导 (1.4.2)
- springfox-swagger2 (2.6.1)
- springfox-swagger-ui (2.6.1)
这当然是可能的。当前不支持方法的模型属性。相反,您可以采用以下方法。
- 用
@ApiIgnore
标记getTenant
方法(不确定它是否被视为请求映射。) - 在您的摘要中,您可以添加
tenantKey
全局路径变量(到所有端点)。由于这是一个多租户应用程序,因此假设这适用于所有端点。