首页 文章

我应该如何使用Swapger和Hapi?

提问于
浏览
12

我有一个普通的Hapi应用程序,我打算迁移到Swagger . 我使用官方说明安装了swagger-node,并在执行'swagger project create'时选择了Hapi . 但是,我现在感到困惑,因为似乎有几个库用于集成swagger-node和hapi:

我虽然swagger-hapi是“官方”方法,但直到我试图找到关于Hapi路线上的各种配置(例如授权,范围等)的信息 . 似乎这些方法根本不同,swagger-hapi将Swagger定义作为输入并自动生成路由,而hapi-swagger和hapi-swaggered似乎通过仅从普通的旧Hapi生成Swagger API文档而具有相似的方法路线定义 .

考虑到贡献者的数量和下载次数,hapi-swagger似乎是要走的路,但我不确定如何继续 . 是否有"official" Swagger方式来设置Hapi,如果有,我如何设置身份验证(最好是使用hapi-auth-jwt2,或其他类似的JWT解决方案)和授权?

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

2 回答

  • 7

    Edit :从您的问题中得出第3点,并了解swagger-hapi实际上做了什么非常重要 . 它没有直接服务于swagger-ui html . 它并非旨在,但它启用了整个招摇的想法(第1点和第2点中的其他项目实际上有点逆转) . 请看下面 .

    事实证明,当你使用swagger-nodeswagger-hapi时,你不需要你提到的所有其他包,除了直接使用swagger-ui(所有其他人都使用它们 - 它们将它包装在它们的依赖项中)

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

    hapi-swaggeredhapi-swaggered-ui这样的库,也是hapi-swagger - 所有这些都遵循相同的方法 - 可能会这样描述:

    You document your API while you are defining your routes

    他们稍微偏离了swagger-node的主要思想和用swagger-cli创建的样板文件hello_world项目,你提到过你使用它 .

    虽然swagger-nodeswagger-hapi(注意它与hapi-swagger不同)说:

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

    然后你只专注于编写控制器逻辑 . 随swagger-cli提供的样板项目已经将这个集中的地方swagger.yaml暴露为json到/ swagger endpoints .

    现在,因为所有上述软件包都用于显示UI的swagger-ui项目,只是一堆静态html - 为了使用它,你有两个选择:

    • 1)从您的应用程序中自我托管此静态html

    • 2)将其托管在单独的Web应用程序上,甚至直接从文件系统加载index.html .

    在这两种情况下,你只需要用你的swagger json来提供swagger-ui - 如上所述已经被 /swagger endpoints 暴露了 .

    如果您选择选项2),唯一需要注意的是您需要为该 endpoints 启用cors,这很容易 . 只需更改你的default.yaml,也可以使用cors bagpipe . 有关如何执行此操作,请参阅此thread .

    正如@Kitanotori上面所说,我也没有看到以编程方式记录代码的重点 . 只是在一个地方描述所有内容并使代码和文档引擎都能理解它的想法非常棒 .

  • 0

    我们正在使用Inert,Vision和hapi-swagger来构建和托管swagger文档 . 我们按照这个顺序加载这些插件,不要配置Inert或Vision,只在hapi-swagger配置中设置像title这样的基本属性 .

相关问题