【问题标题】:Generate Swagger / OpenAPI specification from scala source code (http4s)从 scala 源代码 (http4s) 生成 Swagger / OpenAPI 规范
【发布时间】:2018-03-02 18:05:12
【问题描述】:

所以我不是 swagger 专家,但是所有使用 swagger 的系统都要求您使用 JSON 或 YAML 中的 swagger 规范来定义 API 的所有端点(等等)。

我的问题是:是否有根据实际源代码生成这些规范文件的方法? 我在问,因为当您开始添加属性或返回略有不同的结果时,似乎很难保持端点代码和文档同步。

所以当我有这段代码时(使用 http4s 和 RhoService):

object HelloWorld {
  val service = new RhoService {
    GET / "hello" / 'name |>> { name: String =>
      Ok(Json.obj("message" -> Json.fromString(s"Hello, ${name}")))
    }
  }
}

如果它能够产生(以某种方式)那就太好了:)

/hello/{name}:
    get:
      tags:
      - "HelloWorld"
      summary: ""
      description: ""
      operationId: "getHellobyName"
      produces:         
      - "application/json"
      parameters:
      - name: "name"
        in: "path"
        description: ""
        required: true
        type: "string"
      responses:
        200:
          description: "successful operation"
          schema:
            $ref: "#/definitions/Hello"           
      security:
      - api_key: []

【问题讨论】:

    标签: swagger swagger-2.0 openapi http4s


    【解决方案1】:

    免责声明:我是tapir 的作者。

    rho 是一种可能性。另一种方法是将 API 端点的描述与业务逻辑完全分离。

    有一个端点的描述,这是一个常规的 Scala 值,然后它可以被解释作为服务器(给定“业务逻辑”功能)或文档。

    可以同时提供 http4s 和 OpenAPI 解释器的两个 Scala 库是tapirtypeapi

    【讨论】:

    • 有趣。我会在下一个项目中查看它
    【解决方案2】:

    没有很好的记录,但显然 http4s 的RhoService 添加了中间件以根据您的路由生成swagger.json

    通过调用 'http://localhost:8080/swagger.json' 获取它

    Git 源:https://github.com/http4s/rho/blob/0c5aed48aeeea18b1d66d88b58cd3deea733f070/swagger/src/main/scala/org/http4s/rho/swagger/SwaggerSupport.scala#L30

    【讨论】:

    猜你喜欢
    • 2021-05-16
    • 2020-02-10
    • 2018-02-21
    • 2021-01-30
    • 2019-09-07
    • 1970-01-01
    • 1970-01-01
    • 2021-10-24
    • 1970-01-01
    相关资源
    最近更新 更多