我应该怎样和哈比一起使用Swagger?

我有一个普通的Hapi应用程序,我计划迁移到Swagger。 我使用官方说明安装了swagger-node ,并且在执行'swagger project create'时select了Hapi 。 然而,我现在感到困惑,因为似乎有几个库集成了swagger-node和hapi:

  1. hapi-swagger :最stream行的一个
  2. hapi-swaggered :有点受欢迎
  3. swagger-hapi :不受欢迎,不是那么活跃,但是官方的Swagger Node.js库(即swagger-node )使用Hapi项目的默认

我虽然是“官方”的方法,但直到我试图find关于Hapi路线上的各种configuration(如授权,范围等)的信息。 似乎这些方法也有根本的不同,以Swagger定义为input并自动生成路由,而hapi-swagger和hapi-swaggered似乎有相似的方法,只生成来自普通老Hapi的Swagger API文档路由定义。

考虑到贡献者的数量和下载次数,hapi-swagger似乎是要走的路,但我不确定如何继续。 有没有一个“官方”Swaggerbuild立Hapi的方式,如果有,我该如何设置authentication(最好是使用hapi-auth-jwt2或其他类似的JWT解决scheme)和授权?

编辑:我还发现swaggerize-hapi ,这似乎是由PayPal的开源kraken.js团队维护,这表明它可能有某种企业支持(总是一件好事)。 swaggerize-hapi似乎与hapi-swagger非常相似,尽pipe后者似乎提供了更多的开箱即用function(主要是Swagger Editor)。

编辑 :点3.从你的问题和理解什么样的做法是非常重要的。 它不直接服务于swagger-ui html。 这不是打算,但它是使整个招摇的想法(其中第1点和第2点的其他项目实际上有点逆转)。 请看下面。

事实certificate,当你使用swagger-node和swagger-hapi时 ,除了直接使用swagger-ui (无论如何所有其他使用者都在使用它们),它们并不需要你提到的所有其他包他们的依赖)

我想分享我的理解到目前为止在这个hapi / swagger难题,希望我花了这8个小时也可以帮助别人。

像hapi-swaggered , hapi-swaggered-ui , hapi-swagger这样的图书馆 – 它们都遵循相同的方法 – 可以这样描述:

You document your API while you are defining your routes

他们有点偏离了Swagger-node的主要思想,以及用swagger-cli创build的样板hello_world项目,这些都是你提到的。

虽然大摇大摆的节点和swagger-hapi (注意,它不同于hapi-swagger )说:

You define all your API documentation and routes **in a single centralized place - swagger.yaml**

然后你只专注于编写控制器逻辑。 swagger-cli提供的样板工程已经把这个集中的地方swagger.yaml作为json通过/ swagger端点。

现在,因为所有上面的软件包都用来显示UI的swagger-ui项目,只是一堆静态HTML – 要使用它,你有两个select:

  • 1)从自己的应用程序中自我托pipe这个静态HTML

  • 2)将其托pipe在一个单独的networking应用程序,甚至直接从文件系统加载index.html。

在这两种情况下,你只需要用你的swagger json来喂食swagger-ui,如上所述已经被/swagger终结点暴露了。

唯一需要注意的是,如果您select了选项2),则需要为该端点启用cors,这很容易。 只要改变你的default.yaml,也可以使用cors bagpipe。 请看这个线程如何做到这一点。

正如@Kitanotori所说,我也没有看到以编程方式logging代码的重点。 只是在一个地方描述所有东西,并使代码和文档引擎能够理解它的想法是非常棒的。