gpt4 book ai didi

java - 如何在 swagger.json 中传递 formData 进行 POST 请求?

转载 作者:行者123 更新时间:2023-12-02 09:11:30 24 4
gpt4 key购买 nike

在我的 play 框架应用程序中,我已在路由文件中将 API 注册为:

POST /api/rmt-create-request controllers.Api.CreateRMTRequestForm

在 Controller 的操作中,我使用以下代码来访问通过表单提交提交的 formData:

public Result CreateRMTRequestForm()
{
Map<String, String[]> params = request().body().asMultipartFormData().asFormUrlEncoded();

当我使用 forntend 应用程序提交表单时,它作为 API 工作正常。

我正在尝试使用 swagger.ui 创建 API 文档,其中在 swagger.json 文件中我编写了以下 JSON 数据。

"paths": {"/api/rmt-create-request": {
"post": {
"tags": [
"RMT APIs"
],
"description" : "Return newly created request data",
"operationId": "create-new-rmt-request",
"consumes": ["application/x-www-form-urlencoded"],
"parameters": [
{
"name": "rootNodeName",
"in": "formData",
"description": "Root node class name for item",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/rmt-request-data"
}
}
}
},
"default": {
"$ref": "#/components/responses/default"
}
}
}
},

在检查RequestHeader数据时,它没有显示值为'multipart/form-data'的content-Type属性,并且没有附加formData,这使得 Controller 抛出空异常。

任何人都可以帮助解决 swagger.json 文件中缺少的内容吗?

最佳答案

您正在混合 OpenAPI 2.0 和 3.0 语法。

在 OpenAPI 3.0 中,请求正文(包括表单数据)是使用 requestBody 定义的。关键字而不是 in: formData 参数。

此外,OAS3 不使用consumes。操作使用的媒体类型在 requestBody 内指定。

"paths": {
"/api/rmt-create-request": {
"post": {
"tags": [
"RMT APIs"
],
"description": "Return newly created request data",
"operationId": "create-new-rmt-request",
"requestBody": {
"content": {
"multipart/form-data": { // or "application/x-www-form-urlencoded" - depending on what you need
"schema": {
"type": "object",
"properties": {
"rootNodeName": {
"type": "string",
"description": "Root node class name for item"
}
}
}
}
}
}
}
}
}

更多信息:Describing Request Body

关于java - 如何在 swagger.json 中传递 formData 进行 POST 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59388844/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com