swagger - 使用 Swagger 的 feathers.js 服务的自定义文档
问题描述
我已经在我的 Feather.js 应用程序中配置了 Swagger,它会自动为每个服务上的所有端点生成文档。现在,我想省略某些服务上的某些端点作为文档生成,因为我只是不允许这些端点或它们背后有一些隐藏的逻辑,不允许external
调用。
Fe 我的/users/me
服务端点有以下设置:
before: {
all: [authenticate('jwt')],
find: [
/*
* We don't use an ID when calling `/users/me` like `/users/me/<id>`, and therefore Feathers understands the
* incoming request as a `find` method instead of `get`, therefore we simply redirect it internally.
*/
async context => {
context.result = await context.service.get(context.params.user.id); // eslint-disable-line
return context;
}
],
get: [
iff(isProvider('external'), disallow()),
includeGender()
],
create: [disallow()],
update: [setAuthenticatedUserId()],
patch: [setAuthenticatedUserId()],
remove: [setAuthenticatedUserId()]
}
我已经关注了这些关于feathers-swagger
. 我使用schemasGenerator(service, model, modelName, schemas)
为每个服务生成文档。可以理解,这将为每个服务生成相同的文档模式。根据 github 模块说明,我尝试通过添加docs
对象来添加自定义内容:
service.docs = {
...service.docs,
operations: {
find: false,
create: false
}
};
operations: { find: false, create: false }
或在 Swagger 配置上添加全局对象。
第一个选项没有效果,第二个选项将其应用于所有端点,这对我没有帮助。
解决方案
您必须使用“忽略”选项来排除您想要的端点。您可以指定“标签”数组或“路径”数组。
app.configure(swagger({
docsPath: '/api/docs',
uiIndex: true,
specs: {
info: {
title: 'API Docs',
description: 'Rest APIs',
version: '1.0.0',
},
schemes: ['http', 'https'],
},
ignore: {
paths: [
'users'
]
}
}));
您还可以从服务级别忽略端点。
usersService.docs = {
description: 'A service to manage users',
definitions: {
users: m2s(options.Model),
'users_list': {
type: 'array',
items: { $ref: '#/definitions/users' }
}
},
securities: ['find', 'get', 'update', 'patch', 'remove'],
operations: {'create': false}
};
推荐阅读
- ruby-on-rails - Elasticsearch 6.3.2 术语匹配空数组“加”其他
- python-3.x - 使用 firebase_admin python 下载 firebase 文件
- c++ - std::cout 正在减少 CPU 使用率?
- c# - 如何像在 Wii Tanks 中一样向移动方向旋转坦克主体 - Unity
- java - 在java中的字符串值之前添加前缀
- aql - 当我从文档中编写一个代码时出现莫名其妙的语法错误
- ios - iOS Metal的MTLTexture中的depth和arrayLength有什么区别
- go - 使用互斥锁 - 仍然是死锁
- airflow - 解析 dag 失败在 Cloud Composer 上找不到模块 slackclient
- r - 如何并行两个或多个函数