【问题标题】:Can I use the Request Header somewhere else but not in method call?我可以在其他地方使用请求标头,但不能在方法调用中使用吗?
【发布时间】:2018-05-02 14:07:48
【问题描述】:

是否可以在方法参数列表之外的其他任何地方设置@RequestHeader 注释?下面你可以看到我的代码:

@ApiOperation("Gather all details of a specific device, identified by its ID")
@ApiResponses(value = {
        @ApiResponse(code = 200, message = "OK", response = DeviceResource.class),
        @ApiResponse(code = 404, message = "Device not found", response = VndErrors.class),
        @ApiResponse(code = 500, message = "Printer shell execution error", response = VndErrors.class)
})
@GetMapping("/{id}")
public ResponseEntity<DeviceResource> getDeviceById(
        @ApiParam(value = "ID of the device", required = true)
        @PathVariable String id,
        @RequestHeader(name = "X-NANO-APIKEY") String auth
) {
    return ResponseEntity.ok(new DeviceResource(deviceAccessor.getDeviceById(id)));
}

问题是我也将该方法用于其他调用,所以我必须在这种情况下设置标题。但我不想设置它。我只需要在 swagger-ui 中设置它。感谢您的帮助。

【问题讨论】:

    标签: java spring spring-boot annotations swagger-ui


    【解决方案1】:

    您也可以从 HttpServletRequest 对象中检索请求标头。

    public ResponseEntity<DeviceResource> getDeviceById(
    @ApiParam(value = "ID of the device", required = true)
    @PathVariable String id,
    HttpServletRequest request
    ) {
    String auth = request.getHeader("X-NANO-APIKEY");
    }
    

    希望对你有帮助。

    【讨论】:

    • 我的问题是我无法在 swagger ui 中设置它:/
    • 您可以在案卷定义中使用globalOperationParameters
    猜你喜欢
    • 2018-03-27
    • 2023-01-05
    • 1970-01-01
    • 2021-05-20
    • 1970-01-01
    • 2022-01-06
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    相关资源
    最近更新 更多