【问题标题】:How to Invalidate all the requests for Expired API versions in URI Path with response like 410:Gone in Java?如何使 URI 路径中过期 API 版本的所有请求无效,响应如 410:Gone in Java?
【发布时间】:2021-09-10 11:06:02
【问题描述】:

如果我使用表单的 API 版本控制实现了新版本的 API /api/v3/example/resource,我希望拒绝表单/api/v1/**/api/v2/** 等的请求。 对于所有具有这种结构的请求,我该怎么做??

【问题讨论】:

  • 您可以使用 spring-security 仅允许授权的个人访问您的 API 的 v1 和 v2(就像具有 ROLE_ADMIN 的用户一样)。并让任何人都可以访问 v3。
  • @AkashJain 这不是 OP 想要的——这会给出 401 状态。

标签: java spring-boot spring-mvc spring-restcontroller api-versioning


【解决方案1】:

您可以将以下请求处理方法添加到您的控制器,其中包含所有已弃用路径的映射:

@RequestMapping(value = {"/api/v1/**", "/api/v2/**"})
public ResponseEntity<?> deprecatedVersions() {
    return new ResponseEntity<>(HttpStatus.GONE);
}

【讨论】:

  • 这也可以用501 (Not Implemented)400 (Bad Request) 建模。这是一个错误的请求,因为客户端不知道如何正确调用服务器。
猜你喜欢
  • 1970-01-01
  • 2021-06-12
  • 1970-01-01
  • 2015-08-18
  • 2021-08-11
  • 2019-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多