Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将swagger ui与golang和goa集成_Go_Swagger Ui - Fatal编程技术网

如何将swagger ui与golang和goa集成

如何将swagger ui与golang和goa集成,go,swagger-ui,Go,Swagger Ui,我一直在用go和goa构建我的第一个RESTful服务,所以基本上我开始这样做,最后goa生成了两个招摇过市的文件,swagger.yaml和swagger.json。问题是,我一直在寻找一种方法,将招摇过市的ui添加到索引中。但我还没有找到这样的例子 我也查看了和部分,但他们给我的唯一建议是使用生成器,但我不知道是否有一种方法可以在不需要访问公共主机的情况下执行此操作?TL;博士 展示了如何构建一个服务于静态资产的API,该API可以进行调整以包括Swager UI 为了遵循以下示例: 获取依

我一直在用go和goa构建我的第一个RESTful服务,所以基本上我开始这样做,最后goa生成了两个招摇过市的文件,
swagger.yaml
swagger.json
。问题是,我一直在寻找一种方法,将招摇过市的ui添加到索引中。但我还没有找到这样的例子

我也查看了和部分,但他们给我的唯一建议是使用生成器,但我不知道是否有一种方法可以在不需要访问公共主机的情况下执行此操作?

TL;博士 展示了如何构建一个服务于静态资产的API,该API可以进行调整以包括Swager UI

为了遵循以下示例:

  • 获取依赖项
  • Resource
    s添加到
    design.go
    文件中
  • main.go中安装控制器
  • 下载和编辑大摇大摆的用户界面
  • 运行发电机
  • 在此之后,您应该有一个可工作的REST-API,包括Swagger UI

    细节 (请用包的路径替换
    example.com/your package/

    1.获取依赖项 为了提供文件,示例使用:


    • 从任何文件生成Go代码的小实用程序。用于在Go程序中嵌入二进制数据


    • 使用
      net/http
      go-bindata
      提供嵌入式文件

    使用以下方法获取这些信息:

    go get github.com/a-urth/go-bindata/...
    go get github.com/elazarl/go-bindata-assetfs/...
    
    2.将资源添加到
    design.go
    文件: 3.在
    main.go中安装控制器
    4.下载大摇大摆的用户界面
    用于下载Swagger UI的。
    将所有文件放在
    example.com/your package/public/swagger
    文件夹中

    example.com/your package/public/swagger/index.html
    文件中:

    • 搜索
      http://petstore.swagger.io/v2/swagger.json
    • 将其替换为
      /swagger.json

      这样,将使用生成的
      swagger.json
      代替Petstore示例
    5.运行发电机 这将创建控制器、招摇过市、模式和静态内容

    多恩
    您现在应该有一个功能齐全的招摇过市用户界面。

    我最近运行了这个,还想知道如何启动招摇过市用户界面。一旦生成了
    openapi3.json
    文件,就可以使用这个docker compose配置来打开Swigger ui。您可以根据文件所在的位置替换装入的卷和SWAGGER_JSON变量。大摇大摆的用户界面应该运行正常http://localhost:8080.

    注意:您可能需要在goa中启用CORS来执行请求

    swagger:
      image: swaggerapi/swagger-ui
      ports:
        - '8080:8080'
      environment:
        SWAGGER_JSON: '/openapi3.json'
      volumes:
        - ./gen/http/openapi3.json:/openapi3.json
    
    import (
        "net/http"
    
        "example.com/your-package/app"
        "example.com/your-package/public/swagger"
    
        "github.com/elazarl/go-bindata-assetfs"
        "github.com/goadesign/goa"
        "github.com/goadesign/goa/middleware"
    )
    
    func main() {
        // ...
    
        // Mount "schema" controller
        c1 := NewSchemaController(service)
        app.MountSchemaController(service, c1)
        // Mount "swagger" controller
        c2 := NewSwaggerController(service)
        // You can override FileSystem of the controller.
        // For example using github.com/elazarl/go-bindata-assetfs is like below.
        c2.FileSystem = func(dir string) http.FileSystem {
            return &assetfs.AssetFS{
                Asset:     swagger.Asset,
                AssetDir:  swagger.AssetDir,
                AssetInfo: swagger.AssetInfo,
                Prefix:    dir,
            }
        }
        app.MountSwaggerController(service, c2)
    
        // ...
    }
    
    go generate goagen -d example.com/your-package/design app
    go generate goagen -d example.com/your-package/design main
    go generate goagen -d example.com/your-package/design swagger -o public
    go generate goagen -d example.com/your-package/design schema -o public
    go generate go-bindata -ignore 'bindata.go' -pkg swagger -o public/swagger/bindata.go ./public/swagger/...
    
    swagger:
      image: swaggerapi/swagger-ui
      ports:
        - '8080:8080'
      environment:
        SWAGGER_JSON: '/openapi3.json'
      volumes:
        - ./gen/http/openapi3.json:/openapi3.json