gRPC是一款廣泛應(yīng)用的rpc框架,由于根據(jù)C/S架構(gòu),服務(wù)發(fā)動(dòng)之后,需求編寫對(duì)應(yīng)的客戶端才干調(diào)用,調(diào)試起來相對(duì)費(fèi)事一些,這兒主要介紹一下怎么通過swagger-ui來調(diào)試grpc服務(wù)。
grpc-swagger
gRPC-swagger是根據(jù)gRPC反射開發(fā)的一款gRPC調(diào)試東西,能夠運(yùn)用swagger-ui方便地展示和調(diào)用gRPC辦法。由于gRPC-swagger是根據(jù)反射開發(fā),所以運(yùn)用時(shí)無需修改proto及相關(guān)的代碼完成,只需在發(fā)動(dòng)服務(wù)時(shí)敞開反射功用(不只java,其他言語也能夠)。下圖是運(yùn)用作用
項(xiàng)目地址
grpc-swagger
運(yùn)用辦法
發(fā)動(dòng)grpc-swagger服務(wù)
grpc-swagger是根據(jù)springboot開發(fā),能夠下載jar包直接運(yùn)行:
wgethttps://github.com/grpc-swagger/grpc-swagger/releases/latest/download/grpc-swagger.jar
java-jargrpc-swagger.jar
發(fā)動(dòng)服務(wù)時(shí)敞開反射
該東西是根據(jù)gRPC反射做的,所以需求在發(fā)動(dòng)服務(wù)時(shí)敞開反射,下面是java敞開反射的辦法:
添加依靠
<dependency><groupId>io.grpcgroupId><artifactId>grpc-servicesartifactId><version>${grpc.version}version>dependency>
敞開反射
Serverserver=ServerBuilder.forPort(SERVER_PORT)
.addService(newHelloServiceImpl())//這兒敞開反射.addService(ProtoReflectionService.newInstance())
.build()
.start();
其他言語敞開辦法參考GRPCServerReflectionProtocol
注冊(cè)服務(wù)
由于咱們一開端并不知道對(duì)應(yīng)的gRPC服務(wù)供給哪些服務(wù)辦法,所以這兒有個(gè)注冊(cè)服務(wù)的進(jìn)程,其所做的事便是輸入方針服務(wù)的地址,然后通過反射來獲取當(dāng)時(shí)gRPC服務(wù)供給的服務(wù)辦法。當(dāng)時(shí)供給一個(gè)簡單的頁面,地址是http://localhost:8080/ui/r.html,在EndpointRegister里填入grpc服務(wù)的地址,成功注冊(cè)之后會(huì)在Services里列出可用的服務(wù)
運(yùn)用swagger-ui調(diào)用gRPC服務(wù)
下面就比較簡單了,通過鏈接跳過來便是一個(gè)swagger-ui的頁面,點(diǎn)擊Tryitout就能夠開端調(diào)試了。
完成原理
這兒說下大概的完成原理:
gRPC供給了反射的功用,通過反射,咱們能夠完成獲取服務(wù)的界說、動(dòng)態(tài)的調(diào)用gRPC辦法、JSON和PB相互轉(zhuǎn)化等功用,這兒的完成主要是利用了這個(gè)功用。
Swagger-ui也供給了文檔的格局規(guī)范,咱們將獲取到的gRPC服務(wù)界說轉(zhuǎn)化成swagger-ui需求的格局,就能夠運(yùn)用swagger-ui來進(jìn)行服務(wù)界說的展示和調(diào)用了。
如果還有興趣的同學(xué),能夠去看下源碼。
廣州天河區(qū)珠江新城富力盈力大廈北塔2706
020-38013166(網(wǎng)站咨詢專線)
400-001-5281 (售后服務(wù)熱線)
深圳市坂田十二橡樹莊園F1-7棟
Site/ http://www.szciya.com
E-mail/ itciya@vip.163.com
品牌服務(wù)專線:400-001-5281
長沙市天心區(qū)芙蓉中路三段398號(hào)新時(shí)空大廈5樓
聯(lián)系電話/ (+86 0731)88282200
品牌服務(wù)專線/ 400-966-8830
旗下運(yùn)營網(wǎng)站:
Copyright ? 2016 廣州思洋文化傳播有限公司,保留所有權(quán)利。 粵ICP備09033321號(hào)