Skip to content

Commit

Permalink
Update 02-openapi.md
Browse files Browse the repository at this point in the history
  • Loading branch information
Windfarer authored Sep 5, 2023
1 parent 8dffe7c commit 9280eb3
Showing 1 changed file with 11 additions and 36 deletions.
47 changes: 11 additions & 36 deletions docs/guide/02-openapi.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,61 +12,36 @@ keywords:
- gRPC
- HTTP
---
框架可通过两种方式提供OpenAPI/Swagger的使用:1. 在服务上提供swagger接口,2. 使用protoc插件生成swagger.json文件。下面介绍这两种方式。
### 使用protoc插件生成openapi.yaml文件

### 方式1: 使用插件提供swagger接口

[swagger-api](https://github.com/go-kratos/swagger-api)插件提供了一系列swagger相关的API,以及相应的UI界面

#### 安装

首先安装插件到项目中

```bash
go get -u github.com/go-kratos/swagger-api
```

然后在`internal/server/http.go`的NewHTTPServer中进行初始化和注册,请尽量将这个路由注册放在最前面,以免匹配不到。

```go
import "github.com/go-kratos/swagger-api/openapiv2"

openAPIhandler := openapiv2.NewHandler()
srv.HandlePrefix("/q/", openAPIhandler)
```

#### 使用

浏览器中访问服务的`/q/swagger-ui/`路径即可打开Swagger UI

### 方式2: 使用protoc插件生成swagger.json文件

新建项目Makefile中已经默认集成了生成swagger.json的相关命令,这里也介绍下具体的使用方式
新建项目Makefile中已经默认集成了生成openapi.yaml的相关命令,这里也介绍下具体的使用方式

#### 安装

首先全局安装protoc插件

```bash
go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2
go install github.com/google/gnostic/cmd/protoc-gen-openapi@latest
```

#### 生成
如果是kratos-layout为模板创建出来的项目,已经集成了相应的指令,直接使用命令
```bash
make api
```
即可生成openapi.yaml文件。

在项目根目录直接使用protoc命令,请注意修改命令最后的proto文件路径为实际路径

或者直接调用protoc命令进行生成,在项目根目录直接使用protoc命令,请注意修改命令最后的proto文件路径为实际路径
```bash
protoc --proto_path=. \
--proto_path=./third_party \
--openapiv2_out . \
--openapiv2_opt logtostderr=true \
--openapiv2_opt json_names_for_fields=false \
--openapi_out=fq_schema_naming=true,default_response=false:. \
api/helloworld/v1/greeter.proto
```

#### 使用

上面的命令执行成功后,将在您的proto文件所在目录生成相应的swagger.json文件
上面的命令执行成功后,将在您的proto文件所在目录生成相应的openapi.yaml文件
您可以将其导入任何支持OpenAPI规范的平台进行浏览,例如:

* [Swagger UI](https://github.com/swagger-api/swagger-ui)
Expand Down

0 comments on commit 9280eb3

Please sign in to comment.