如何在没有 运行 服务器的情况下使用 hapi-swaggered
How to use hapi-swaggered without a running server
我有一个可用的 hapi 服务,包括 hapi-swaggered 和 hapi-swaggered-ui。这在很多情况下都很有用,但我想在我的 CI 中添加一个 build 步骤,这将能够获得 hapi-swaggered 生成的 JSON (如果更改,会把它编译成一个 .Net 程序集,然后存储在本地 proget 中)。
我知道如果我真的想要,在我的 build 服务器上,我可以启动我的服务器实例,curl
到 localhost:3000/swagger
,终止服务器,然后继续,但这似乎有点冒险(即,如果我同时有两个 builds 运行 怎么办?)。
有没有人开发出一种直接调用 hapi-swaggered API 来获取原始 JSON 的方法?
好吧,这并没有花太多时间,但我想我找到了一个解决方案。在这种情况下,internals
是我的服务器。它不会 auto-start 如果它是从另一个文件加载的(required
'ed),并且公开 compose
方法以使用 hapi 的 Glue.compose
到 assemble 服务.看来以后可以用inject
的方法来模拟调用了。
'use strict';
var internals = require('./');
internals.compose(function(err, server) {
server.inject({ method: 'GET', url: '/swagger' }, function (response) {
console.log(JSON.stringify(response.result));
process.exit();
});
});
如果我对这项技术有任何遗漏,我想听听。
我有一个可用的 hapi 服务,包括 hapi-swaggered 和 hapi-swaggered-ui。这在很多情况下都很有用,但我想在我的 CI 中添加一个 build 步骤,这将能够获得 hapi-swaggered 生成的 JSON (如果更改,会把它编译成一个 .Net 程序集,然后存储在本地 proget 中)。
我知道如果我真的想要,在我的 build 服务器上,我可以启动我的服务器实例,curl
到 localhost:3000/swagger
,终止服务器,然后继续,但这似乎有点冒险(即,如果我同时有两个 builds 运行 怎么办?)。
有没有人开发出一种直接调用 hapi-swaggered API 来获取原始 JSON 的方法?
好吧,这并没有花太多时间,但我想我找到了一个解决方案。在这种情况下,internals
是我的服务器。它不会 auto-start 如果它是从另一个文件加载的(required
'ed),并且公开 compose
方法以使用 hapi 的 Glue.compose
到 assemble 服务.看来以后可以用inject
的方法来模拟调用了。
'use strict';
var internals = require('./');
internals.compose(function(err, server) {
server.inject({ method: 'GET', url: '/swagger' }, function (response) {
console.log(JSON.stringify(response.result));
process.exit();
});
});
如果我对这项技术有任何遗漏,我想听听。