Articles of swagger

如何为包含许多Swagger定义.json / .yml文件的目录组织/构build一个Swagger UI界面

我试图通过Swagger UI来logging供应商产品(WSO2 ESB)中开发的现有API服务的内部公司消耗。 供应商产品不支持招摇。 我计划以编程方式检查/处理我的API服务(写在供应商产品中)的源代码,并生成.json或.yml格式的swagger定义文件的目录/文件夹/库。 这很好,我可以做到这一点。 这些api定义文件中的每一个都将在swagger UI中很好地呈现,我正在使用https://www.npmjs.com/package/swagger-ui 。 我的问题是我最终会有大约100个这样的API定义文件,我想提供一些全面的界面/页面,其中列出了所有的API,然后将用户带到用户点击时加载的特定API定义的Swagger UI在其中一个链接上。 这相当于打开我本地的swagger-ui,并在相关API定义的path中手动input/复制。 这工作正常,如果我手动做,我只是不希望用户必须手动执行此操作。 他们如何知道API定义url的存在以及为什么要手动input/复制它们。 我看不到如何将“apiDefintionToLoad”parameter passing给Swagger-ui,我想我会find一个或更改来源支持。 这是否存在? 有没有更好的解决scheme,要么开发自己,要么使用现有的软件包或解决scheme? 我更喜欢基于节点的解决scheme,Java也行。 我是否在这个错误? 谢谢,Matt。

NodeJS API通过ID获取。 如何检测项目未find?

我正在开发一个GET端点来从数据库(dynamoDB)中获取元素。 我使用Swagger在我的api中定义数据模型。 这是我的控制器中的operationId方法: getInvoiceConfigById: function(req, res) { var myId = req.swagger.params.id.value; // InvoiceConfig is a dynamoDb model // providerId attribute is the unique key of the db table InvoiceConfig.scan('providerId') .eq(myId) .exec(function (err, config) { if (err) { console.log("Scan InvoiceConfig error"); throw err; } res.status(200).send(config); }); } 如果找不到id,我想发送404消息。 我在swagger-ui中注意到响应的主体是空的 Response Body [] 当在数据库中找不到id时。 如何在我的代码中检测到ID未find时? 我试图检查响应的主体是否为空: 如果(!(config.body)) […]

HTTPS与NodeJS swagger-express-mw npm包

我使用swagger-express-mw NPM包来创buildREST服务,当我用“swagger project start”运行项目,然后通过HTTP发布API时,我该如何使用HTTPS来代替。 我已经使用香草npm包使用HTTPS如下: var fs = require('fs'); var https = require('https'); var app = require('express')(); var options = { key : fs.readFileSync('my.private.key'), cert : fs.readFileSync('my.certificate.cer') }; app.get('/', function (req, res) { res.send('Yuhooo! Response over HTTPS!!! '); }); https.createServer(options, app).listen(8443, function () { console.log('Server started @ 8443!'); }); 但我不知道如何实现与swagger-express-mw相同,下面是我的app.js启动侦听器的代码片段。 在这里没有得到任何select使用HTTPS作为协议 SwaggerExpress.create(configuration, function(err, swaggerExpress) { […]

CORS问题使用生成的代码(SWAGGER)

我生成我的服务器代码( nodejs-server )基于我有的规格说明。 问题是,当我尝试从我的用户界面(不同的域)击中API时,我得到了知道CORS未启用的错误: XMLHttpRequest cannot load http://127.0.0.1:10010/events. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:4200' is therefore not allowed access. 我生成的index.js如下所示: 'use strict'; var fs = require('fs'), path = require('path'), http = require('http'); var app = require('connect')(); var swaggerTools = require('swagger-tools'); var jsyaml = require('js-yaml'); var serverPort = 10010; // swaggerRouter […]

Swagger 2.0中的JSON对象的模式types是什么?

我在Swagger 2.0的帮助下编写了一个API文档。 我已经生成了一个API,其中响应是在数组的书,这是正常工作。 [{ "id": 1, "book_name": "The Complete Reference Java8", "author": "Herbert Schidt", "genre": "Technology" }, { "id": 2, "book_name": "C Programming", "author": "Dennis Ritchie", "genre": "Technology" }] 昂首阔步 /fetchBooks: get: description: | Returns an array of book objects. responses: 200: description: Successful response schema: title: ArrayOfBooks type: array items: type: object properties: id: […]

提供Node / JS REST API的文档

我正在寻找使用Node和Express构buildREST API,并且希望为它提供文档。 我不想手工制作,看起来有Swagger,RAML和Api Blueprint / Apiary等forms的解决scheme。 我真正喜欢的就是使用Swabbuckle或者微软提供的解决scheme,尽可能在.NET中使用API​​代码自动生成文档,但是通过强大的input和reflection使得它们成为可能。 对于JS世界来说,正确的select是使用Swagger / RAML / Api Blueprint标记来定义API,然后从中生成文档和脚手架服务器。 前者看似简单,但我对后者不太确定。 我所见过的所有这些选项的服务器代码生成看起来都非常有限。 需要有一些方法来将自动生成的代码与手动代码分开,以便定义可以很容易地更新,而且我也没有看到任何迹象或讨论。 这似乎不是一个不可逾越的问题(我比.NET更熟悉.NET,所以我可以很容易地错过了一些东西),并提到这个问题和解决scheme正在从以前的堆栈溢出问题一年前。 任何人都可以告诉我,如果我失踪/误解任何东西,如果有解决上述问题的存在?

我们可以有Swagger多个subapi吗?

我正在开发一个nodeJS系统,我使用requireJS和Swagger。 现在,我准备创build我的网站的新版本。 我们可以有多个subapi与招摇。 我的意思是,目前我的swagger api位于localhost:2052 / docs,我希望我的系统有2个apis: localhost:2052 / docs和 本地主机:2052 / 2.0 /文档 如果是的话,是否有可能招摇过市呢?

如何使用swagger-ui模块在我的MEAN堆栈项目中显示Swagger JSON文件?

我是NodeJS和AngularJS的新手,所以我可能会接近完全错误,但值得问… 我正在尝试使用swagger-ui Node模块以交互式的Swagger-ish风格显示我的API文档。 我想在我的NodeJS应用程序中通过传入我自己的Swagger JSON文件(在public/assets/my-swagger.json )执行此操作。 我假设我可以做这样的事情: angular.module('SwaggerCtrl', []).controller('SwaggerController', function($scope) { $scope.swagger = new function() { var swaggerUi = new SwaggerUi({ url: '../../assets/my-swagger.json', dom_id: "swagger-ui-container" }); swaggerUi.load(); }; }); 从https://www.npmjs.com/package/swagger-ui#swaggerui取得 。 然后在我的swagger.html我会做这样的事情: <div class="jumbotron text-center"> <h1>Swagger</h1> <p>{{ swagger }}</p> <div id="swagger-ui-container"></div> </div> 但是,当我去http:// localhost:8080 / swagger ,我得到ReferenceError: SwaggerUi is not defined我的控制台上ReferenceError: SwaggerUi is not defined错误信息。 […]

使用严格模式进行Swaggervalidation

我正在使用Swagger工具和Swagger Spec 2.0来validation我的Node JS服务中的请求正文。 问题是带附加属性的JSON通过validation,并影响服务的内部逻辑。 有效的JSON示例: { "name": "proper object", "requiredProperty": "some value" } 仍然有效的JSON的例子,我想阻止: { "name": "proper object", "requiredProperty": "some value", "additionalProperty": "should not be here!!!" } 是否有可能使用严​​格的模式,将失败的请求包含额外的属性?

如何整合与koa和joi的招摇?

我正在编写基于KOA框架的节点API。 为了validation,我更喜欢Joivalidation,并添加一个中间件。 现在我想整合Swagger 。 但我认为我编写了两次相同的代码部分(请求数据validation部分,一个在joivalidation中,另一个在swagger yaml文件中)。 请给我举一个例子,或者把swagger,koa和joi结合起来的最好方法。