【问题标题】:Swagger openApi Spec 3.0 - DELETE operationSwagger openApi Spec 3.0 - DELETE 操作
【发布时间】:2019-07-23 04:39:41
【问题描述】:

我正在使用 swagger openapi 规范 3.0 从我的界面生成 swagger。我有一个接受请求正文的删除方法。但根据RFC7231DELETE 不接受任何请求正文。 Swagger-request body 也这么说。但我的 API 旨在接受 DELETE 操作中的请求正文。在创建 swagger 以使 DELETE 操作接受请求正文方面是否有任何解决方法。目前我从 swagger generation 得到的错误是,

Sematic error: DELETE operations cannot have a requestBody

【问题讨论】:

标签: swagger openapi swagger-3.0


【解决方案1】:

不,您不能使用 OpenAPI 3.0 规范和 Swagger 工具来实现带有请求正文的 DELETE 请求。正如您正确指出的那样,HTTP RFC 说 DELETE 请求正文具有 no defined semantics (因此应该避免),并且 OpenAPI 3.0 特别禁止正文没有定义语义的 HTTP 方法中的正文。有关上下文,请参阅 this discussion

考虑更改您的 API 设计,例如,将 DELETE 正文替换为路径、查询字符串或标头参数。查看RESTful Alternatives to DELETE Request Body 了解一些想法。

【讨论】:

  • 谢谢海伦。唯一可能的方法是更改​​ API 设计。想有什么办法可以生成,但什么也没找到。我们必须遵守规则,否则我们将被统治。关闭这个。