01 創建go-micro項目-查看生成的 proto文件
02 創建go-micro項目-查看生成的main文件和handler
## 創建 micro 服務
命令:micro new --type srv test66
框架默認自帶服務發現:mdns。
使用consul服務發現:
????1.?初始consul服務發現: consulReg := consul.NewRegistry()
?????2.?在 NewService 中 添加 服務。 micro.Registry(consulReg ),
03 http補充說明知識
# 使用 go-micro框架 創建 客戶端
命令:micro new --type web test77
### 補充 http 相關知識:
-?路由器:資源分發
-?路由:請求分發。
????-?service.HandleFunc("/test77/call", handler.Test77Call)
????????-?將 /test77/call 這個請求,通過 回到函數 Test77Call() 處理。
-?URL:
????-?組成:https://ip+port/資源路徑
????????-?https://ip+port/???找到 pc機,找到 對應進程
????????-?資源路徑:在代碼中,稱之為路由。
????-?“/ ” : 代表 主機上進程 對應的默認資源。
????????-?http協議,自動找當前目錄下的 index.html 文件,做默認頁面。
### go-micro 框架 測試使用 分析圖
04 go-micro框架服務端-客戶端測試
# gin 框架
go常見的web框架:gin、beego、echo、Iris 。。。
### 實現簡單的 web?
http 常用方法與 數據庫訪問 一一對應。
- GET —— 查 —— 獲取數據
- Post —— 增 —— 增加數據
- Put —— 改 —— 更新數據
- Delete —— 刪 —— 刪除數據
05 gin框架介紹和測試
06 gin框架客戶端與micro服務端對接
### 使用 gin 框架創建最簡單的web?
```go
func main()??{
????// 1. 初始化路由 -- 官網:初始化 web 引擎
????router := gin.Default()
????// 2. 做路由匹配
????router.GET("/", func(context *gin.Context) {
????????context.Writer.WriteString("hello world!")
????})
????// 3. 啟動運行
????router.Run(":8080")
}
```
07 使用訪問發現consul測試
### gin 框架的客戶端 與 微服務 對接
1.??封裝回調函數, 給 router.Get() 設置
2.??拷貝 微服務的 “ 密碼本” protobuf 到??web 中
3.??修改 protobuf文件的 包名。??test66別名??“test66web/proto/test66”
4.??實現 回調函數:
????1.?初始化客戶端。????microClient := NewTeset66Sevice(服務名,client.DefaultClient)
????2.?調用遠程服務。????resp, err := microClient.Call(context.TODO, &test66.Request{
????????????????????????????????????????})
????3.?將 返回的 數據, 顯示到 瀏覽器。 context.Writer.WriteString(resp.Msg);
```go
package main
import (
????"github.com/gin-gonic/gin"
????"fmt"
????test66 "test66web/proto/test66"?????// test66 為包的別名.
????"github.com/micro/go-micro/client"
????"context"
)
08 consul使用圖解和RESTful
func CallRemote(ctx *gin.Context)??{
????// 1. 初始化客戶端
????microClient := test66.NewTest66Service("go.micro.srv.test66", client.DefaultClient)
????fmt.Println()
????// 2. 調用遠程服務
????resp, err := microClient.Call(context.TODO(), &test66.Request{
????????Name:"xiaowang",
????})
????if err != nil {
????????fmt.Println("call err:", err)
????????return
????}
????// 為了方便查看, 在打印之前將結果返回給瀏覽器
????ctx.Writer.WriteString(resp.Msg)
????fmt.Println(resp, err)
}
func main()??{
????// 1. 初始化路由 -- 官網:初始化 web 引擎
????router := gin.Default()
????// 2. 做路由匹配
????router.GET("/", CallRemote)
????// 3. 啟動運行
????router.Run(":8080")
}
09 MVC簡介
### 指定 consul 服務發現到 go-micro 服務和 gin 框架客戶端中
-?mdns服務發現: (組播)支持的服務,必須是本地服務, 局域網內的服務。
#### 修改 go-micro 微服務
1.?consulReg := consul.NewRegistry()???初始化 consul服務發現
2.?添加 服務 service := micro.NewService(
????????????micro.Name("go.micro.srv.test66"),
????????????????micro.Registry(consulReg),
????????????????micro.Version("latest"),
????????????)
3.?在命令行,執行 consul agent -dev
10 創建項目-創建目錄結構-查看文檔-導入錯誤處理包
#### 修改 gin 框架 web服務 (客戶端)
1.??consulReg := consul.NewRegistry()???初始化 consul服務發現
2.??microClinet := micro.NewService( micro.Registry(consulReg ) )
3.??test66.NewTest66Service(“服務名”,microClinet.Client() )
測試:瀏覽器鍵入: 192.168.6.108:8080??——> hello xiaowang?

11 創建項目-資源目錄html介紹
# REST?
REST全稱是Representational State Transfer:??表述性 狀態 轉義
本質:一種代碼設計風格。??web開發中常用。——遵循風格!
使用:一般以 http 4 種請求方法, 來確定對某一資源(URI:標識符。名詞)的 固定操作。
-?獲取數據:GET
-?添加數據:POST
-?修改數據:PUT
-?刪除數據:Delete
?????????滿足 REST 設計風格的, 稱之為 “RESTful”
?????
# MVC
-?是一種常見的 “代碼組織架構”, 可以在開發中,對數據進行處理并解耦。
????-?model:模型。 處理數據庫相關的文件。
????-?veiw:視圖。處理顯示相關的文件。 網站:html
????-?controller:控制器。處理具體業務!??聯動 m 和 v
-?MVC 與語言無關!是常見的 代碼組織架構。
