如何使用java注释创建多个404响应(或者更广泛地说,多个相同的HTTP代码响应)。
我试过:
@ApiResponse(
responseCode = "404",
description = "Not Found 1"
)
@ApiResponse(
responseCode = "404",
description = "Not Found 2"
)
还有多个@Content
:
@ApiResponse(
responseCode = "404",
content = {
@Content(schema = @Schema(name = "404-1", description = "404-1")),
@Content(schema = @Schema(name = "404-2", description = "404-2"))
}
)
我能得到类似于多重的东西的唯一方法是使用@ExampleObject[]
:
@ApiResponse(
responseCode = "404",
content = @Content(
mediaType = "application/json",
examples = {
@ExampleObject(name = "404-1", description = "Not Found 1 desc"),
@ExampleObject(name = "404-2", description = "Not Found 2 desc")
}
)
)
这并不理想,因为它需要人与人之间的互动来查看所有这些内容,而这只是不需要的;我们的期望是:
- 200
- 404 Description 1
- 404 Description 2
- 404 Description 3
或者更好:
- 200
- 404 Description 1
Description 2
Description 3
我正在使用springdoc和以下dep:
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-ui</artifactId>
<version>1.4.3</version>
</dependency>
我通过添加超文本标记语言解决了我的问题
@Operation(
responses = {
@ApiResponse(responseCode = "404", content = @Content,
description =
"This is potential 404 #1 <br/>" +
"This is potential 404 #2"
)
}
)
或者,
您可以创建注释以使其更具可读性,例如类似于@ApiResponse404
的内容,并通过OperationCustomizer
将其添加到操作中:
@Override
public Operation customize(Operation operation, HandlerMethod handlerMethod) {
ApiResponse404 notFounds = handlerMethod.getMethodAnnotation(ApiResponse404.class);
if (notFounds != null)
operation.getResponses()
.addApiResponse("404", new ApiResponse()
.description(String.join("<br/>", notFounds.value()))
);
return operation;
}
当然,您必须考虑@内容
,您可以轻松地将其添加到注释中,但我不需要它,我的场景,我只需要描述。
然后在控制器中,您可以使用注释:
@GetMapping("/helloworld")
@ApiResponse404({"This is potential 404 #1", "This is potential 404 #2"})
String getHelloWorld() {
return "Hello. World.";
}
根据设计,而不是springdoc,而是OpenAPI-规范,所有响应都存储在扩展LinkedHashMap的Api响应类型中。
每个HTTP代码中,对于一个操作只能分配一个ApiContent对象。
使用例子是一个很好的方法。如果您的多个404响应具有不同的结构,您可以使用one of如下:
@RestController
public class HelloController {
@GetMapping("/hello")
@ApiResponses({
@ApiResponse(responseCode = "200"),
@ApiResponse(description = "Not found", responseCode = "404",
content = @Content(mediaType = "application/json", schema = @Schema(oneOf = {
Foo.class, Bar.class }))) })
String hello() {
return null;
}
@Schema(description = "this is bar")
class Bar {
private String bar;
public String getBar() {
return bar;
}
public void setBar(String bar) {
this.bar = bar;
}
}
@Schema(description = "this is foo")
class Foo {
private String foo;
public String getFoo() {
return foo;
}
public void setFoo(String foo) {
this.foo = foo;
}
}
}
我有一个控制器endpoint,返回字符串列表。我有代码在我的转换层,取代了这个页面的字符串。(Page是我写过的一个类。)我如何告诉Spring医生来处理这个。默认情况下,springdoc将响应声明为字符串的JSON数组。 我可以让它替换我的回答中的字段列表,如下所示: 但我不想让它那样做。事实上,页面有一个列表字段,因此它会变成一个页面字段,而页面字段本身也有一个页面字段,依此类推。 使用s
根据传入的参数,我有一个可以返回单个项目或项目列表的endpoint(目前endpoint没有灵活性,我无法更改代码)。 我试图生成API留档与OpenApi注释。 我的endpoint: 参数是可选的。如果只提供了参数,则返回已获得资格的人员列表,例如: {返回 为此,我的响应注释是: 但是,如果还提供了参数,则仅返回特定的资格记录持有人,例如: 返回: 对此,我的回答是: 我的问题是我不知道如
我想在spring boot中,当响应对象对于每个响应自动为null时返回404。 我需要建议。 我不想检查控制器中的对象是否为null。
我们最近从springfox迁移到springdoc openapi 3。其中一个API返回大约2MB的数据,它在springfox中正常工作,但是springdoc openapi用户界面在几分钟内没有响应,渲染也需要2分钟以上。有什么办法可以解决吗?
本文向大家介绍symfony2 返回404响应,包括了symfony2 返回404响应的使用技巧和注意事项,需要的朋友参考一下 示例 当在服务器上找不到资源时,将返回404响应。在Symfony中,可以通过引发NotFoundHttpException异常来创建此状态。为了避免use在控制器内部添加多余的语句,请使用类createNotFoundException()提供的Controller
我正试图将示例响应值添加到我的springdoc-openapi swagger文档中。 比如用“马克吐温”代替“字符串”等。 我尝试使用这个解决方案-springdoc openapi:如何添加POST请求示例? 我已经在课堂上使用了。 如果我使用这个- @io.swagger.v3.oas.annotations.parameters.RequestBody(内容=@Content(示例={@