POST-request 中的 Swagger UI 缺少内容类型 header
SwaggerUI missing contenType header in POST-request
我正在使用 swaggerUI 来验证我的 swagger 规范。
GET 方法或带有 body 的 POST 方法工作正常,但在使用带有 @FormParam 的 POST 方法时出现问题。我的服务器说它缺少请求中的内容类型,这是正确的,SwaggerUi 生成的命令看起来像这样
curl -X POST "https://localhost:8184/authentication/password/reset?username=chrome&newPassword=11114444" -H "accept: application/json"
我的 swaggerUI 代码看起来就是这样
/user/delete:
post:
tags:
- "Usermanagement"
summary: Löscht einen Nutzer
description: Löscht einen Nutzer anhand seines "username"
consumes:
- application/x-www-form-urlencoded
produces:
- application/json
parameters:
- in: query
name: username
type: "string"
description: Benutzername
responses:
200:
description: Nutzer wurde erfolgreich gelöscht
400:
description: Der Löschvorgang konnte nicht ausgeführt werden
而我的服务器代码看起来像那样
@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces(MediaType.APPLICATION_JSON)
@Path("/activation")
public Response activation(@NotNull @FormParam("username") String username,
@NotNull @FormParam("active") Boolean active) {
return runWithExceptionMapper(() -> {
if (active) {
userService.activateUser(username);
} else {
userService.deactivateUser(username);
}
});
}
服务器代码总体上很好,它可以在浏览器和 Postman 中运行。
我只是想不通为什么 swaggerUI 不使用 curl 命令发送 contenttype 或者我如何强制它这样做。
编辑:
我发现 brwoser 没有发送 curl-command,而是 http-request。但是有效载荷中仍然缺少内容,即content-type。为什么我的服务器不知道如何处理 "unknown" 数据。
问题已解决。
错误是我的参数输入类型。而不是查询,它应该是 formData(显然)。
正确的规范代码如下所示
/user/delete:
post:
tags:
- "Usermanagement"
summary: Löscht einen Nutzer
description: Löscht einen Nutzer anhand seines "username"
consumes:
- application/x-www-form-urlencoded
produces:
- application/json
parameters:
- in: formData
name: username
type: "string"
description: Benutzername
responses:
200:
description: Nutzer wurde erfolgreich gelöscht
400:
description: Der Löschvorgang konnte nicht ausgeführt werden
我正在使用 swaggerUI 来验证我的 swagger 规范。
GET 方法或带有 body 的 POST 方法工作正常,但在使用带有 @FormParam 的 POST 方法时出现问题。我的服务器说它缺少请求中的内容类型,这是正确的,SwaggerUi 生成的命令看起来像这样
curl -X POST "https://localhost:8184/authentication/password/reset?username=chrome&newPassword=11114444" -H "accept: application/json"
我的 swaggerUI 代码看起来就是这样
/user/delete:
post:
tags:
- "Usermanagement"
summary: Löscht einen Nutzer
description: Löscht einen Nutzer anhand seines "username"
consumes:
- application/x-www-form-urlencoded
produces:
- application/json
parameters:
- in: query
name: username
type: "string"
description: Benutzername
responses:
200:
description: Nutzer wurde erfolgreich gelöscht
400:
description: Der Löschvorgang konnte nicht ausgeführt werden
而我的服务器代码看起来像那样
@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces(MediaType.APPLICATION_JSON)
@Path("/activation")
public Response activation(@NotNull @FormParam("username") String username,
@NotNull @FormParam("active") Boolean active) {
return runWithExceptionMapper(() -> {
if (active) {
userService.activateUser(username);
} else {
userService.deactivateUser(username);
}
});
}
服务器代码总体上很好,它可以在浏览器和 Postman 中运行。
我只是想不通为什么 swaggerUI 不使用 curl 命令发送 contenttype 或者我如何强制它这样做。
编辑: 我发现 brwoser 没有发送 curl-command,而是 http-request。但是有效载荷中仍然缺少内容,即content-type。为什么我的服务器不知道如何处理 "unknown" 数据。
问题已解决。
错误是我的参数输入类型。而不是查询,它应该是 formData(显然)。
正确的规范代码如下所示
/user/delete:
post:
tags:
- "Usermanagement"
summary: Löscht einen Nutzer
description: Löscht einen Nutzer anhand seines "username"
consumes:
- application/x-www-form-urlencoded
produces:
- application/json
parameters:
- in: formData
name: username
type: "string"
description: Benutzername
responses:
200:
description: Nutzer wurde erfolgreich gelöscht
400:
description: Der Löschvorgang konnte nicht ausgeführt werden