go微服务开发:go-zero入门教程(二)

以下内容,参考了go-zero官方文档,是对官方文档的进阶指南章节的梳理汇总。

go-zero的进阶指南,请参考 https://go-zero.dev/cn/docs/advance/business-dev

 

通过本文,你将学习到如下知识点:

1.如何使用go-zero定义api文件

2.如何为定义的api文件生成api服务

3.如何编写模块业务逻辑

4.go-zero开发注意实现,参见这里 https://www.cnblogs.com/jamstack/p/17223639.html

 

在开始之前,假设你已经对go-zero有了基本的了解,并且了解go-zero编写api文件的语法。如果还不了解,建议先阅读这里 https://go-zero.dev/cn/docs/design/grammar/ 

 

开发环境:

Windows 11

Terminal preview

go 1.19

 

go-zero的进阶指南的演示工程,共包含2个模块:user和search,本篇讲述的是search模块,user模块请参见:go微服务开发:go-zero入门教程(一)

 

第一步:定义search模块的api文件

  cd service\search\api,新建search.api,内容如下:

type (
    SearchReq {
        // 图书名称
        Name string `form:"name"`
    }

    SearchReply {
        Name string `json:"name"`
        Count int `json:"count"`
    }
)

@server(
    jwt: Auth
)
service search-api {
    @handler search
    get /search/do (SearchReq) returns (SearchReply)
}

service search-api {
    @handler ping
    get /search/ping
}

第二步:为search.api生成api服务

  cd service\search\api,执行如下命令:

goctl api go -api search.api -dir . 

第三步:完善config.go配置

cd service\search\api\internal\config\,编辑config.go,内容如下:

package config

import "github.com/zeromicro/go-zero/rest"

type Config struct {
	rest.RestConf
	Auth struct {
		AccessSecret string
		AccessExpire int64
	}
}

第四步:完善search模块search-api.yaml配置

cd service\search\api\etc\,编辑search-api.yaml,内容如下:

Name: search-api
Host: 0.0.0.0
Port: 8889
Auth:
  AccessSecret: abcdefgh
  AccessExpire: 3600

第五步:启动search模块

cd service\search\api\,执行:

go run search.go -f etc/search-api.yaml

第六步:使用cmd测试search模块

  1.检索《西游记》,不传用户token

curl -i -X GET http://127.0.0.1:8889/search/do?name=%E8%A5%BF%E6%B8%B8%E8%AE%B0

  2.检索《西游记》,传用户token

curl -i -X GET http://127.0.0.1:8889/search/do?name=%E5%B0%8F%E6%98%8E -H "Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2Nzg5NjM0MDQsImlhdCI6MTY3ODk1OTgwNCwidXNlcklkIjoxfQ.4qy18I8CmW9sOpRBFr15e70y2WGGA_OGKGBSaRHYGec"

  

 
 
 
 
 
 
 
posted @ 2023-03-16 17:15  jamstack  阅读(405)  评论(0编辑  收藏  举报