Swagger OpenApi规范3.0 - DELETE操作

3
我正在使用Swagger OpenAPI规范3.0从我的接口生成swagger。我有一个删除方法,它接受请求正文。但根据RFC7231DELETE不接受任何请求正文。Swagger-request body也是如此。但我的API被设计为在DELETE操作中接受请求正文。是否有任何解决方法可以创建Swagger,以便DELETE操作接受请求正文。目前,从Swagger生成中获得的错误是:
Sematic error: DELETE operations cannot have a requestBody

3
Open API 3.1将修复这个问题,请参见https://github.com/OAI/OpenAPI-Specification/pull/2117。 - Martin Grey
2个回答

8
不,你不能使用OpenAPI 3.0规范和Swagger工具来实现带有请求体的DELETE请求。正如你正确指出的那样,HTTP RFC表示DELETE请求体没有定义的语义(因此应避免使用),而OpenAPI 3.0特别禁止在HTTP方法中使用没有定义语义的请求体。请参阅此讨论以了解一些背景信息。
考虑更改API设计,例如,用路径、查询字符串或头参数替换DELETE请求体。查看RESTful Alternatives to DELETE Request Body获取一些想法。

谢谢Helen。唯一的可能是改变API设计。虽然想过是否有其他方法可以生成,但没有找到。我们必须遵循规则,否则我们将被统治。结束此事。 - Aravinth

0

在Open API 3.0中,明确禁止使用此类操作(DELETE、GET请求带有正文)。在此之前,这种操作是允许的或含糊不清的。


1
你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心中找到有关如何编写良好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接