欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

zuulGateway 通過filter統(tǒng)一修改返回值的操作

 更新時間:2020年10月09日 10:13:28   作者:Gogym  
這篇文章主要介紹了zuulGateway 通過filter統(tǒng)一修改返回值的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

使用spring cloud有時候我們給客戶端返回內(nèi)容的時候,往往需要添加一些額外的東西。比如加密,多添加一個返回值等等。

當(dāng)然可以在方法里面處理,但如果方法很多,需要統(tǒng)一處理的,就很不方便了,這時候可以通過zuulGateway的filter來統(tǒng)一處理。

直接看代碼,很簡單:

import java.io.InputStream;
import java.nio.charset.Charset;
import org.springframework.cloud.netflix.zuul.filters.support.FilterConstants;
import org.springframework.util.StreamUtils;
import org.springframework.util.StringUtils;
import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext;
import com.poly.zuul.common.Constants;
import com.poly.zuul.enums.ServiceId;
import com.poly.zuul.utils.AESJSEncryptUtils;
import com.poly.zuul.utils.RsaEncryptUtil;
/**
 * 返回值輸出過濾器,這里用來處理返回值
 * 
 * @Title: ResponseFilter
 * @Description:
 * @author kokJuis
 * @date 上午9:52:42
 */
public class ResponseFilter extends ZuulFilter
{
 @Override
 public Object run()
 {
  RequestContext context = RequestContext.getCurrentContext();
  try
  {
   // 獲取返回值內(nèi)容,加以處理
   InputStream stream = context.getResponseDataStream();
   String body = StreamUtils.copyToString(stream, Charset.forName("UTF-8"));
   String returnStr = "";
 
 //你的處理邏輯,加密,添加新的返回值等等.....
 
   // 內(nèi)容重新寫入
   context.setResponseBody(returnStr);
  }
  catch (Exception e)
  {
   e.printStackTrace();
  }
  return null;
 }
 @Override
 public boolean shouldFilter()
 {
  RequestContext ctx = RequestContext.getCurrentContext();
  String requestURI = String.valueOf(ctx.get("requestURI"));
  if (requestURI.contains(Constants.alipay))
  {
 //不需要處理的URL請求,返回false
   return false;
  }
  return true;
 }
 @Override
 public int filterOrder()
 {
  return FilterConstants.SEND_RESPONSE_FILTER_ORDER - 3;
 }
 @Override
 public String filterType()
 {
  return FilterConstants.POST_TYPE;// 在請求被處理之后,會進入該過濾器
 }
}

然后在@Configuration里面注冊一下這個filter就可以了

 @Bean
 public ResponseFilter responseFilter()
 {
  return new ResponseFilter();
 }

補充知識:springCloud 服務(wù)提供者應(yīng)返回的統(tǒng)一的數(shù)據(jù)格式

我就廢話不多說了,大家還是直接看代碼吧~

package com.zledu.commonentity.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
 * @Author: husToy.Wang
 * @Date: 2019/6/27 8:55
 * @Version 1.0
 * @date 2019-06-27 08:58
 * @author wangzhilei
 */
@Data
public class BaseResult implements Serializable {
 private static final String OK = "OK";
 private static final String NotOK = "notOk" ;
 private static final String SUCCESS = "操作成功";
 private String result;
 private Object data;
 private String success;
 private Cursor cursor;
 private List<Error> errors;
 // TODO 返回?zé)o參ok
 public static BaseResult ok(){
  return createRestult(OK, null, SUCCESS,null,null ) ;
 }
 // TODO 返回帶success 的 ok
 public static BaseResult ok(String success){
  return createRestult(OK, null, success, null, null);
 }
 // TODO 返回帶 data 的ok
 public static BaseResult ok(Object data){
  return createRestult(OK, data, SUCCESS, null, null);
 }
 // 返回帶分頁的數(shù)據(jù)
 public static BaseResult ok(Object data, Cursor cursor) {
  return createRestult(OK, data, SUCCESS, cursor, null);
 }
 // TODO 返回錯誤數(shù)據(jù)
 public static BaseResult notOk(List<BaseResult.Error> errors){
  return createRestult(NotOK, null, null, null, errors);
 }
 // TODO 構(gòu)建錯誤與正確方法
 public static BaseResult createRestult(String result, Object data,String success, Cursor cursor, List<BaseResult.Error> errors){
  BaseResult baseResult = new BaseResult();
  baseResult.setResult(result);
  baseResult.setData(data);
  baseResult.setSuccess(success);
  baseResult.setCursor(cursor);
  baseResult.setErrors(errors);
  return baseResult;
 }
 @Data
 @AllArgsConstructor
 public static class Cursor {
  private int total;
  private int offset;
  private int limit;
 }
 @Data
 @AllArgsConstructor
 public static class Error{
  private String field;
  private String message;
 }
}

以上這篇zuulGateway 通過filter統(tǒng)一修改返回值的操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java自動生成編號的方法步驟

    Java自動生成編號的方法步驟

    在新增數(shù)據(jù)時,往往需要自動生成編號,本文主要介紹了Java自動生成編號的方法步驟,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Java中transient關(guān)鍵字的詳細(xì)總結(jié)

    Java中transient關(guān)鍵字的詳細(xì)總結(jié)

    本文要介紹的是Java中的transient關(guān)鍵字,transient是短暫的意思。對于transient 修飾的成員變量,在類的實例對象的序列化處理過程中會被忽略,感興趣的朋友可以參考閱讀
    2023-04-04
  • 面試官:Java中new Object()到底占用幾個字節(jié)

    面試官:Java中new Object()到底占用幾個字節(jié)

    這篇文章主要介紹了面試官:Java中new Object()到底占用幾個字節(jié),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02
  • 一文詳解jvm中的引用類型

    一文詳解jvm中的引用類型

    在Java中對象以引用來指向JVM的內(nèi)存區(qū)塊,這里我們總結(jié)了強引用、軟引用、弱引用和假象引用(幽靈引用),下面這篇文章主要給大家介紹了關(guān)于jvm中引用類型的相關(guān)資料,需要的朋友可以參考下
    2024-04-04
  • Spring框架接入單機Redis兩種實現(xiàn)方式解析

    Spring框架接入單機Redis兩種實現(xiàn)方式解析

    這篇文章主要介紹了Spring框架接入單機Redis兩種實現(xiàn)方式解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-09-09
  • Java設(shè)計模式中的單例模式解析

    Java設(shè)計模式中的單例模式解析

    這篇文章主要介紹了Java設(shè)計模式中的單例模式解析,單例模式確保一個類只有一個實例,而且自行實例化并向整個系統(tǒng)提供這個實例,需要的朋友可以參考下
    2023-11-11
  • Java 進程執(zhí)行外部程序造成阻塞的一種原因

    Java 進程執(zhí)行外部程序造成阻塞的一種原因

    前一陣子在研究文檔展示時使用了java進程直接調(diào)用外部程序,其中遇到一個問題花了好長時間才解決,這個問題就是外部程序直接執(zhí)行沒什么問題,但是當(dāng)使用Java進程執(zhí)行時外部程序就阻塞在那兒不動了。而且這個外部程序在處理某些文件時使用Java進程執(zhí)行是沒問題的
    2014-03-03
  • 解決springboot啟動Logback報錯ERROR in ch.qos.logback.classic.joran.action.ContextNameAction - Failed to rena

    解決springboot啟動Logback報錯ERROR in ch.qos.logback.cla

    這篇文章主要介紹了解決springboot啟動Logback報錯ERROR in ch.qos.logback.classic.joran.action.ContextNameAction - Failed to rena問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • Mybatis詳解動態(tài)SQL以及單表多表查詢的應(yīng)用

    Mybatis詳解動態(tài)SQL以及單表多表查詢的應(yīng)用

    MyBatis的動態(tài)SQL是基于OGNL表達(dá)式的,它可以幫助我們方便的在SQL語句中實現(xiàn)某些邏輯,下面這篇文章主要給大家介紹了關(guān)于Mybatis超級強大的動態(tài)SQL語句的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • SpringBoot整合Minio實現(xiàn)圖片上傳功能

    SpringBoot整合Minio實現(xiàn)圖片上傳功能

    Minio是一款開源的對象存儲服務(wù)器,它提供了一個云原生的、高性能的、易于擴展的文件系統(tǒng)接口,用于存儲和檢索任意大小的數(shù)據(jù),本文將給大家介紹SpringBoot整合Minio實現(xiàn)圖片上傳功能,需要的朋友可以參考下
    2024-08-08

最新評論