micro 功能很是強大,本文將詳細闡述micro web 命令行的功能html
閱讀本文前你可能須要進行以下知識儲備
本文應用環境
名稱 | 描述 |
---|---|
操做系統 | win10 |
go version | go version go1.12.7 windows/amd64 |
GOPATH | E:winliongopath |
GOPROXY | |
G111MODULE | on |
命令行工具 | cmder工具,可自行百度安裝 |
命令行說明
micro web指令所有參數以下前端
NAME: micro web - Run the web dashboard USAGE: micro web [command options] [arguments...] OPTIONS: --address value Set the web UI address e.g 0.0.0.0:8082 [%MICRO_WEB_ADDRESS%] --namespace value Set the namespace used by the Web proxy e.g. com.example.web [%MICRO_WEB_NAMESPACE%]
- address 用來指定web訪問地址,默認是8082端口,
- namespace 用來指定開啓web支持的服務空間,com.axample.web表示全部知足com.axample.web.*的應用都支持
典型應用場景
微信應用開發平臺
www.xxx.comwww.xxx.comhttps://www.xxx.com/demo1/https://www.xxx.com/demo2/
服務名稱 | 說明 | 訪問地址 |
---|---|---|
com.techidea8.web.www | A公司的主域名 | |
com.techidea8.srv.wxmp | A公司的微信服務,如簽名、分享、菜單管理等 | |
com.techidea8.web.attach | A公司的資源上傳服務 | |
com.techidea8.web.pay | A公司的支付服務 | |
com.techidea8.web.account | A公司的用戶中心 | |
com.techidea8.web.article | A公司的寫做類平臺 | |
com.techidea8.web.demo1 | A公司的demo1應用 | |
com.techidea8.web.demox | A公司的demox應用 |
a公司能夠不斷迭代業務,這個平臺具有良好的擴張性。golang
分佈式任務分發平臺
com.techidea8.channel*
服務名稱 | 說明 | 訪問地址 |
---|---|---|
com.techidea8.web.www | 網站首頁 | |
com.techidea8.web.attach | 圖片、資源等上傳服務 | |
com.techidea8.web.account | 用戶中心 | |
com.techidea8.web.article | 文檔中心 | |
com.techidea8.web.channelcsdn | csdn渠道應用 | |
com.techidea8.web.channeljuejin | 掘金渠道應用 |
實戰hello,world!
業務梳理
假設咱們須要實現相似於以下千人千面功能,具體應用場景以下算法
- 首頁應用www,展現經常使用基本信息
- 推薦支持,不一樣的用戶(uuid標識),顯示不一樣的內容
服務設計以下windows
服務名稱 | 說明 | 訪問地址 |
---|---|---|
go.micro.web.www | 系統首頁 | |
go.micro.srv.recommend | 推薦服務 | http://127.0.0.1:8082/www/guess |
得到源代碼並運行
重要的事情說3次
micro web 源代碼https://idea.techidea8.com/open/idea.shtml?id=7
micro web 源代碼https://idea.techidea8.com/open/idea.shtml?id=7
micro web 源代碼 https://idea.techidea8.com/open/idea.shtml?id=7 後端
%GOPATH%\src\techidea8.com\microapp\doc\web
$pwd E:\winlion\gopath\src\techidea8.com\microapp\doc\web $ls recommend/ www/
依次執行以下指令便可bash
#切換到wwww目錄下 src\techidea8.com\microapp\doc\web\www>go run main.go #切換到recommend服務目錄下 src\techidea8.com\microapp\doc\web\recommend>go run main.go #啓動web支持 src\techidea8.com\microapp\doc\web\recommend>micro web --namespace=go.micro.web
界面以下
關於www應用細節
- 建立應用框架
>micro new --type=web techidea8.com/microapp/doc/web/www
- 設計proto文件,這裏須要請求一個Guess接口
#E:\winlion\gopath\src\techidea8.com\microapp\doc\web\www\proto\recommend\recommend.proto service Recommend{ rpc Guess(Request)returns(Response){}; }
- 經過proto生成go文件
#E:\winlion\gopath\src\techidea8.com\microapp\doc\web\www\ 目錄下 >protoc --proto_path=. --proto_path=E:/winlion/gopath/src --go_out=. --micro_out=. proto/recommend/recommend.proto #
- 調用猜你喜歡服務,核心代碼以下
//handler/handler.go //go.micro.srv.recommend 是後端猜你喜歡服務名稱 guessClient := recommend.NewRecommendService("go.micro.srv.recommend", client.DefaultClient) rsp, err := guessClient.Guess(context.TODO(), &recommend.Request{ Uuid: request["uuid"].(string),//uuid是前端用戶ID })
- 猜你喜歡restful接口支持/www/guess
//默認須要加上服務名前奏 // register html handler service.Handle("/", http.FileServer(http.Dir("html"))) // register call handler/www/guess service.HandleFunc("/guess", handler.Guess)
- 啓動web服務
$micro web --namespace=go.micro.web #結果以下 2019/08/25 15:32:08 HTTP API Listening on [::]:8082 2019/08/25 15:32:08 Transport [http] Listening on [::]:57563 2019/08/25 15:32:08 Broker [http] Connected to [::]:57564 2019/08/25 15:32:08 Registry [mdns] Registering node: go.micro.web-32fafadb-a795-46bc-b4d8-ad9a30607a7e
關於推薦服務recommend細節
- 建立應用框架
>micro new --type=srv techidea8.com/microapp/doc/web/recommend
- 設計proto文件,這裏須要請求一個Guess接口
#E:\winlion\gopath\src\techidea8.com\microapp\doc\web\recommend\proto\recommend\recommend.proto service Recommend{ rpc Guess(Request)returns(Response){}; }
- 經過proto生成go文件
#E:\winlion\gopath\src\techidea8.com\microapp\doc\web\recommend\ 目錄下 >protoc --proto_path=. --proto_path=E:/winlion/gopath/src --go_out=. --micro_out=. proto/recommend/recommend.proto #
- 實現推薦服務,核心代碼以下
//handler\recommend.go //go.micro.srv.recommend 是後端猜你喜歡服務名稱 func (e *Recommend) Guess(ctx context.Context, req *recommend.Request, rsp *recommend.Response) error { log.Log("Received Recommend.Call request") //具體推薦算法實在這裏實現的, //推薦算法獲得結果後賦值給resp.Results rsp.Results = "這是用戶[" + req.Uuid + "]的推薦內容" return nil }
- 取消事件相關特性
咱們這裏不考慮事件,因此將事件相關特性取消,先一出subscriber目錄,而後修改main.go
main.go // 取消事件訂閱支持 //micro.RegisterSubscriber("go.micro.srv.recommend", service.Server(), new(subscriber.Hello)) //取消事件發佈支持 //micro.RegisterSubscriber("go.micro.srv.recommend", service.Server(), subscriber.Handler)
- 啓動推薦服務
$go run main.go
推薦閱讀
掃微信二維碼實現網站登錄提供體驗地址和源代碼
開源項目golang go語言後臺管理框架restgo-admin
支持手勢觸摸,可左右滑動的日曆插件
你必須知道的18個互聯網業務模型