提问人:Prashant Bansod 提问时间:11/17/2023 最后编辑:Prashant Bansod 更新时间:11/20/2023 访问量:47
OpenAPI- 提供一个链接,以下载pdf格式的响应示例(为pdf添加示例)
OpenAPI- Provide a link to download response's examples in pdf (adding examples for pdf)
问:
在 Openapi 中,需要在 Swagger UI/Redoc 等中提供 pdf 格式的响应示例作为下载链接。
我正在使用 OpenAPI 3.1 和 API 之一。我需要将响应示例显示为基于外部示例托管(本地)的 pdf 文件。它可以是在 UI 中下载 PDF 的链接。尝试各种方法后,我无法在 Swagger UI 和 Redoc UI 中获取下载文件的链接。
我正在使用基于JSON的OpenAPI。我已经参考了 Open API 3 - 在响应中为单个内容类型添加标头并在 JSON 中实现它。但就我而言,我无法让它工作。
示例如下:
"/myapplication/pdfresponse": {
"get": {
"responses": {
"200": {
"description": "PDF format response.",
"content": {
"application/pdf": {
"schema":{
"type": "string",
"format":"binary"
},
"examples":{
"exampleName":{
"summary":"PDF format.",
"externalValue": "examples/abc.pdf"
}
}
}
},
"headers":{
"Content-Disposition":{
"schema":{
"type": "string",
"example": "attachment; filename=abc.pdf"
}
}
}
}
}
可能是标头内容处置错误或需要其他内容。请提供JSON样本,或者如果我遗漏了什么,请告诉我。谢谢。。。!
答:
0赞
Jeremy Fiel
11/18/2023
#1
我认为您要要求的是提供 pdf 文档的下载 url。
您需要使用并提供 <string> 作为下载位置externalValue
uri
除非您将文件托管在本地以外的其他位置,否则这可能不起作用。我有一种感觉,cors 会在 ui 的本地实例上阻止此请求。
我知道在撰写本文时,Redoc 无法解析 uris。如果您想发表评论、贡献或以其他方式了解其最新进展,您可以关注此问题。externalValue
{
"openapi": "3.1.0",
"info": {
"title": "test api",
"version": "1.0.0"
},
"paths": {
"/api/v1/thing": {
"get": {
"responses": {
"200": {
"description": "thing",
"headers": {
"content-disposition": {
"schema": {
"type": "string"
},
"examples": {
"sample_header": {
"value": "application/pdf; attachment; filename: sample.pdf"
}
}
}
},
"content": {
"application/pdf": {
"schema": {
"type": "string",
"format": "binary"
},
"examples": {
"pdf_example": {
"summary": "a download link for a pdf",
"externalValue": "file://C:\\Users\/<user>\/Downloads\/1testing.pdf"
}
}
}
}
}
}
}
}
}
}
评论
0赞
Prashant Bansod
11/20/2023
谢谢你的回答。是的,它给出的响应显示为一种流文本。Swagger UI 和 Redoc 无法呈现内联 pdf。因此,是否可以通过显示“下载文件”选项引用链接将此接收到的流下载为 pdf 格式
0赞
Jeremy Fiel
11/20/2023
如果您阅读了有关该问题的评论,则需要使用带有附件参数的 content-disposition 标头。我更新了答案以包含它。不确定它是否适用于 redoc
0赞
Prashant Bansod
11/20/2023
是的,我已经按照您建议的代码添加了内容处置标头。但是在 Redoc 和 Swagger UI 中没有运气来获得可下载的 pdf 链接。
0赞
Jeremy Fiel
11/20/2023
我建议在他们的两个 github 存储库上提出一张票。
0赞
Prashant Bansod
11/21/2023
好的,谢谢。。。。。!
评论