我使用 fastify 创建了一些模式定义,如下所示,其中我使用“标题”来为模型提供有意义的名称。
fastify.addSchema({
$id: 'persistence-query-params',
title: "PersistenceQueryParams", // Here
type: 'object',
description: 'Persistence Service GET API URL query specification. Applicable for GET API only.',
properties: {
...........
},
});
但是,当我查看从 swagger 生成的 json 时(我使用 fastify-swagger: 4.8.4 和 fastify: 3.20.1),我看到了这个
def-7: ## Here
title: PersistenceQueryParams
type: object
description: >-
Persistence Service GET API URL query specification. Applicable for GET
API only.
properties:
这会在 OpenAPI 2.0 https://editor.swagger.io/ 中出现,当加载从该架构生成的 json 时。
我也尝试过添加名称字段:
name: "PersistenceQueryParams",
然而没有运气。
如何在 OpenAPI 2.0 中创建有意义的名称,而不是 def-0、def-1 等?
谢谢, 普拉迪普
对于现在阅读本文的任何人来说,现在都可以做到这一点。您需要像这样覆盖配置中的
refResolver
:
fastify.register(swagger, {
refResolver: {
buildLocalReference(json, baseUri, fragment, i) {
// This mirrors the default behaviour
// see: https://github.com/fastify/fastify-swagger/blob/1b53e376b4b752481643cf5a5655c284684383c3/lib/mode/dynamic.js#L17
if (!json.title && json.$id) {
json.title = json.$id;
}
// Fallback if no $id is present
if (!json.$id) {
return `def-${i}`;
}
return `${json.$id}`;
},
},
openapi: {
// Your spec here...
}
});
可点击评论链接:
现在您的裁判将拥有有意义的名字。