今天就跟大家聊聊有關(guān)怎么在Spring Cloud中使用Zuul實(shí)現(xiàn)服務(wù)網(wǎng)關(guān),可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
創(chuàng)新互聯(lián)建站是網(wǎng)站建設(shè)專家,致力于互聯(lián)網(wǎng)品牌建設(shè)與網(wǎng)絡(luò)營(yíng)銷,專業(yè)領(lǐng)域包括成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、電商網(wǎng)站制作開(kāi)發(fā)、微信小程序開(kāi)發(fā)、微信營(yíng)銷、系統(tǒng)平臺(tái)開(kāi)發(fā),與其他網(wǎng)站設(shè)計(jì)及系統(tǒng)開(kāi)發(fā)公司不同,我們的整合解決方案結(jié)合了恒基網(wǎng)絡(luò)品牌建設(shè)經(jīng)驗(yàn)和互聯(lián)網(wǎng)整合營(yíng)銷的理念,并將策略和執(zhí)行緊密結(jié)合,且不斷評(píng)估并優(yōu)化我們的方案,為客戶提供全方位的互聯(lián)網(wǎng)品牌整合方案!
Spring Cloud Zuul
- 路由+過(guò)濾器 - 核心是一系列的過(guò)濾器
Zuul路由配置
management: security: enabled: false // 權(quán)限設(shè)置 zuul: routes: # myProduct: // 這個(gè)名稱可以隨便填 # path: /myProduct/** # serviceId: product # sensitiveHeader: //敏感頭過(guò)濾 # 簡(jiǎn)潔寫(xiě)法 product: /myProduct/** ignored-patterns: - /**/product/listForOrder // 不對(duì)外部訪問(wèn)(-代表set集合)
查看所有的路由規(guī)則:localhost:port/application/routes { /myProduct/**: "product", /config/**: "config", /product/**: "product", }
Zuul配置的動(dòng)態(tài)注入(也可以寫(xiě)入啟動(dòng)類中)
@Compoent public class ZuulConfig{ @ConfigurationProperties("zuul") @RefreshScope public ZuulProperties zuulProperties(){ return new ZuulProperties(); } }
典型應(yīng)用場(chǎng)景
前置過(guò)濾器
- 限流 - 鑒權(quán) - 參數(shù)校驗(yàn)調(diào)整
后置過(guò)濾器
- 統(tǒng)計(jì) - 日志
要想實(shí)現(xiàn)Filter,需要以下幾個(gè)步驟:
1、繼承ZuulFilter類,為了驗(yàn)證Filter的特性,我們這里創(chuàng)建3個(gè)Filter
根據(jù)用戶名來(lái)過(guò)濾
package com.chhliu.springcloud.zuul; import javax.servlet.http.HttpServletRequest; import com.netflix.zuul.ZuulFilter; import com.netflix.zuul.context.RequestContext; public class AccessUserNameFilter extends ZuulFilter { @Override public Object run() { RequestContext ctx = RequestContext.getCurrentContext(); HttpServletRequest request = ctx.getRequest(); System.out.println(String.format("%s AccessUserNameFilter request to %s", request.getMethod(), request.getRequestURL().toString())); String username = request.getParameter("username");// 獲取請(qǐng)求的參數(shù) if(null != username && username.equals("chhliu")) {// 如果請(qǐng)求的參數(shù)不為空,且值為chhliu時(shí),則通過(guò) ctx.setSendZuulResponse(true);// 對(duì)該請(qǐng)求進(jìn)行路由 ctx.setResponseStatusCode(200); ctx.set("isSuccess", true);// 設(shè)值,讓下一個(gè)Filter看到上一個(gè)Filter的狀態(tài) return null; }else{ ctx.setSendZuulResponse(false);// 過(guò)濾該請(qǐng)求,不對(duì)其進(jìn)行路由 ctx.setResponseStatusCode(401);// 返回錯(cuò)誤碼 ctx.setResponseBody("{\"result\":\"username is not correct!\"}");// 返回錯(cuò)誤內(nèi)容 ctx.set("isSuccess", false); return null; } } @Override public boolean shouldFilter() { return true;// 是否執(zhí)行該過(guò)濾器,此處為true,說(shuō)明需要過(guò)濾 } @Override public int filterOrder() { return 0;// 優(yōu)先級(jí)為0,數(shù)字越大,優(yōu)先級(jí)越低 } @Override public String filterType() { return "pre";// 前置過(guò)濾器 } }
看完上述內(nèi)容,你們對(duì)怎么在Spring Cloud中使用Zuul實(shí)現(xiàn)服務(wù)網(wǎng)關(guān)有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。
文章題目:怎么在SpringCloud中使用Zuul實(shí)現(xiàn)服務(wù)網(wǎng)關(guān)
鏈接分享:http://jinyejixie.com/article48/ppeiep.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、企業(yè)建站、企業(yè)網(wǎng)站制作、做網(wǎng)站、商城網(wǎng)站、靜態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)