github.com/isyscore/isc-gobase@v1.5.3-0.20231218061332-cbc7451899e9/server/README.md (about) 1 2 # server 3 server包是用于更加方便的开发web项目而封装的包,开启配置的话,如下 4 5 ### 简单示例 6 ```yaml 7 # application.yml 内容 8 base: 9 server: 10 # 是否启用,默认:false 11 enable: true 12 ``` 13 ```go 14 package main 15 16 import ( 17 "github.com/gin-gonic/gin" 18 "github.com/isyscore/isc-gobase/server" 19 "github.com/isyscore/isc-gobase/server/rsp" 20 ) 21 22 func main() { 23 server.Get("api/get", GetData) 24 server.Run() 25 } 26 27 func GetData(c *gin.Context) { 28 rsp.SuccessOfStandard(c, "value") 29 } 30 ``` 31 运行如下 32 ```shell 33 root@user ~> curl http://localhost:8080/api/get 34 {"code":0,"data":"value","message":"success"} 35 ``` 36 37 ## 全部配置 38 39 isc-gobase项目内置的一些server的配置 40 ```yaml 41 api-module: sample 42 43 base: 44 api: 45 # api前缀,默认包含api前缀,如果路径本身有api,则不再添加api前缀 46 prefix: /api 47 application: 48 # 应用名,默认为空 49 name: isc-gobase-demo 50 # 服务版本号 51 version: vx.x.xx 52 server: 53 # 是否启用,默认:true 54 enable: true 55 # 端口号,默认:8080 56 port: 8080 57 gin: 58 # 有三种模式:debug/release/test,默认 release 59 mode: debug 60 pprof: 61 # pprof开关是否可以开启,默认false 62 enable: false 63 cors: 64 # 是否启用跨域配置,默认启用 65 enable: true 66 request: 67 print: 68 # 是否打印:true, false;默认 false 69 enable: false 70 # 打印的话日志级别,默认debug 71 level: info 72 # 指定要打印请求的uri 73 include-uri: 74 - /xxx/x/xxx 75 - /xxx/x/xxxy 76 # 指定不打印请求的uri 77 exclude-uri: 78 - /xxx/x/xxx 79 - /xxx/x/xxxy 80 response: 81 print: 82 # 是否打印:true, false;默认 false 83 enable: false 84 # 打印的话日志级别,默认debug 85 level: info 86 # 指定要打印请求的uri 87 include-uri: 88 - /xxx/x/xxx 89 - /xxx/x/xxxy 90 # 指定不打印请求的uri 91 exclude-uri: 92 - /xxx/x/xxx 93 - /xxx/x/xxxy 94 exception: 95 # 异常返回打印 96 print: 97 # 是否启用:true, false;默认 false 98 enable: true 99 # 一些异常httpStatus不打印;默认可不填 100 exclude: 101 - 408 102 - 409 103 # 版本号设置,默认值:unknown 104 version: 1.0.0 105 swagger: 106 # 是否开启swagger:true, false;默认 false 107 enable: false 108 ``` 109 isc-gobase项目内置的一些endpoint端口 110 ```shell 111 base: 112 # 内部开放的 endpoint 113 endpoint: 114 # 健康检查处理,默认关闭,true/false 115 health: 116 enable: true 117 # 配置的管理(查看和变更),默认关闭,true/false 118 config: 119 enable: true 120 # bean的管理(属性查看、属性修改、函数调用),默认false 121 bean: 122 enable: true 123 ``` 124 125 ### api.prefix和api-module介绍 126 其中api和api-module这个配置最后的url前缀是<br/> 127 {api.prefix}/{api-module}/业务代码 128 129 比如如上: 130 131 ```shell 132 root@user ~> curl http://localhost:8080/api/sample/get/data 133 {"code":0,"data":"ok","message":"success"} 134 ``` 135 136 ### server介绍 137 额外说明: 138 提供request和response的打印,用于调试时候使用 139 ```shell 140 # 开启请求的打印,开启后默认打印所有请求,如果想打印指定uri,请先配置uri 141 curl -X PUT http://localhost:xxx/{api-prefix}/{api-module}/config/update -d '{"key":"base.server.request.print.enable", "value":"true"}' 142 # 开启响应的打印 143 curl -X PUT http://localhost:xxx/{api-prefix}/{api-module}/config/update -d '{"key":"base.server.request.print.enable", "value":"true"}' 144 # 开启异常的打印 145 curl -X PUT http://localhost:xxx/{api-prefix}/{api-module}/config/update -d '{"key":"base.server.exception.print.enable", "value":"true"}' 146 ``` 147 148 #### 指定uri打印 149 如果不指定uri则会默认打印所有的请求 150 ```shell 151 # 指定要打印的请求的uri 152 curl -X PUT http://localhost:xxx/{api-prefix}/{api-module}/config/update -d '{"key":"base.server.request.print.include-uri[0]", "value":"/api/xx/xxx"}' 153 # 指定不要打印的请求uri 154 curl -X PUT http://localhost:xxx/{api-prefix}/{api-module}/config/update -d '{"key":"base.server.request.print.exclude-uri[0]", "value":"/api/xx/xxx"}' 155 156 # 指定要打印的响应的uri 157 curl -X PUT http://localhost:xxx/{api-prefix}/{api-module}/config/update -d '{"key":"base.server.request.print.include-uri[0]", "value":"/api/xx/xxx"}' 158 # 指定不要打印的响应uri 159 curl -X PUT http://localhost:xxx/{api-prefix}/{api-module}/config/update -d '{"key":"base.server.request.print.exclude-uri[0]", "value":"/api/xx/xxx"}' 160 ``` 161 162 提示:<br/> 163 - 如果"请求"和"响应"都开启打印,则只会打印"响应",因为响应中已经包括了"请求" 164 - 指定多个uri的话,如下,配置其实是按照properties的方式进行指定的 165 ```shell 166 curl -X PUT http://localhost:xxx/{api-prefix}/{api-module}/config/update -d '{"key":"base.server.request.print.include-uri[0]", "value":"/api/xx/xxx"}' 167 curl -X PUT http://localhost:xxx/{api-prefix}/{api-module}/config/update -d '{"key":"base.server.request.print.include-uri[1]", "value":"/api/xx/xxy"}' 168 curl -X PUT http://localhost:xxx/{api-prefix}/{api-module}/config/update -d '{"key":"base.server.request.print.include-uri[2]", "value":"/api/xx/xxz"}' 169 ... 170 ``` 171 ## swagger 使用介绍 172 如果想基于 gobase 来使用 swagger 这里需要按照如下步骤来处理 173 174 #### 1. 安装命令 175 这个是 go-swagger 必需 176 ```shell 177 go install github.com/swaggo/swag/cmd/swag 178 ``` 179 #### 2. 添加注解 180 这里按照go-swagger官网的注解进行编写即可,比如 181 182 ```go 183 // @Summary xxx 184 // @title xxx 185 // @Tags xxx 186 // @Router /api/xx/xx/xxxx/xxx [post] 187 // @param param body Addxxxx true "用户请求参数" 188 // @Success 200 {object} any 189 ``` 190 191 #### 3. 生成swagger文件 192 这里按照go-swagger官网的注解进行编写即可 193 ```shell 194 swag init 195 ``` 196 #### 4. 添加swagger的doc引入 197 执行命令`swag init`后会生成`docs`文件夹,里面有相关的swagger配置。这里需要代码显示的引入,否则swagger解析不出来,建议在`main.go`中引入,示例: 198 ```go 199 package main 200 201 import ( 202 "github.com/isyscore/isc-gobase/server" 203 // 这里:不引入就会在swagger生成的页面中找不到doc.json文件 204 _ "isc-xx-service/docs" 205 ) 206 207 // @Title xxx 208 // @Version 1.0.0 209 func main() { 210 server.Run() 211 } 212 ``` 213 214 #### 5. 开启开关,运行程序 215 代码开启如下开关 216 ```yaml 217 base: 218 swagger: 219 enable: true 220 ``` 221 启动程序后,打开网页即可看到 222 ```shell 223 http://xxxx:port/swagger/index.html 224 ``` 225 226 ### 问题 227 如果遇到如下问题,则执行下如下即可 228 ```shell 229 ../../../go/src/pkg/mod/github.com/swaggo/swag@v1.8.5/gen/gen.go:18:2: missing go.sum entry for module providing package github.com/ghodss/yaml (imported by github.com/swaggo/swag/gen); to add: 230 go get github.com/swaggo/swag/gen@v1.8.5 231 ../../../go/src/pkg/mod/github.com/swaggo/swag@v1.8.5/cmd/swag/main.go:10:2: missing go.sum entry for module providing package github.com/urfave/cli/v2 (imported by github.com/swaggo/swag/cmd/swag); to add: 232 go get github.com/swaggo/swag/cmd/swag@v1.8.5 233 ``` 234 执行 235 ```shell 236 go get github.com/swaggo/swag/gen 237 go get github.com/swaggo/swag/cmd/swag 238 ```