我试图找出如何指示到SpringDoc
OpenApi
一个自定义对象正在生成使用HandlerMultiodArgumentResolver
拦截一些传入的请求参数并从中创建一个对象。这个概念实际上与Spring使用@Pagable
所做的相同。
以下是我的自定义对象的某些部分:
class FlightRequestHandlerMethodArgumentResolver implements HandlerMethodArgumentResolver {
FlightRequestHandlerMethodArgumentResolver() {
}
@Override
boolean supportsParameter(final MethodParameter parameter) {
return FlightRequest.class.equals(parameter.getParameterType());
}
@Override
Object resolveArgument(
final MethodParameter parameter,
final ModelAndViewContainer mavContainer,
final NativeWebRequest webRequest, final WebDataBinderFactory binderFactory) throws Exception {
final Map<String, String[]> parameterMap = webRequest.getParameterMap()
// query param names are configurable
// implementation about finding query param names is ommited
return new FlightRequest(parameterMap)
}
FlightRequest
class:
public class FlightRequest {
@Parameter(name = "startDate")
private final LocalDate startDate;
@Parameter(name = "endDate")
private final LocalDate endDate;
FlightRequest (LocalDate startDate, LocalDate endDate) {
this.submissionStartDate = submissionStartDate;
this.submissionEndDate = submissionEndDate;
}
使用带有默认查询参数名称的FlightRequest
的控制器:
@RequestMapping(value = "/flights", method = RequestMethod.GET)
Flights flights(FlightRequest flightRequest, HttpServletResponse response) {
return flightSearchService.retrieveFlights(flightRequest);
}
使用带有自定义查询参数名称的FlightRequest
的控制器:
@RequestMapping(value = "/current-flights", method = RequestMethod.GET)
Flights flights(@FlightRequestParams(fromDateParamName="current-flights-from", toDateParamName="current-flights-till) FlightRequest flightRequest, HttpServletResponse response) {
return flightSearchService.retrieveFlights(flightRequest);
}
正如您在上面的示例中看到的,每个endpoint都可以覆盖默认的查询参数名称
我如何向Spring Doc
表明这一点?
似乎您在这里使用的不是spring注释,而是您自己的:@FlightRequestParams。
如果您真的希望动态添加默认值,那么您可以为您的注释编写自己的注释委托方法参数自定义程序,就像为@PageableDefault
编写一样。然后宣布它为春豆,如下所示。
或者最简单的方法,是使用@Parameter
注释声明参数值。您可以看到PageableAsQueryParam的示例。
班级水平 方法级
我正在尝试使用Spring安全注释,如@PreAuthorize和@安全,但我希望评估用户不是在一个角色上,而是他们是否拥有对特定实体的权限,在这种情况下是一家公司。在我的控制器中,我收到一个超文本传输协议请求,其中包含一个firmId作为参数,我想确保这个用户被允许进入这家公司。是否可以使用当前的Spring安全注释?。我正在寻找一个优雅的解决方案,我一直在寻找自定义约束验证器作为jsr303规
我正在尝试将自定义查询添加到Spring Data JDBC CrudRepository,以允许通过备用自然键查找实体。实体有一个 ID,在本例中为 Long,以及一个自然键,即 Reference 类型(基础类型为 UUID)。 我已经创建并注册了从引用到UUID的自定义转换器,反之亦然,并且希望在通过引用查找实体时使用它们。转换在从数据库中提取和存储实体时起作用(Postgres 12.2)
我发现了几个与此相关的(不是重复的)问题,但它们不能让我满意。 我无法理解在哪里以及为什么要使用? 我在一本书中读到了一个自定义注释的示例,但没有详细解释。 myMeth()内的输出与预期一致。 关于这个例子,我有几个问题。 1-如何在此程序中使用和?或
我创建了一个新的注释来验证控制器上的参数: 这是我的验证器: 这是我的控制器: 我的控制器注释为: 我还有一个建议控制器,我打算用它来捕捉抛出的异常: 我在控制台上得到的是: pom.xml中的依赖关系: 谁能告诉我我错过了什么?