真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何約定前后端對接數(shù)據(jù)格式

本篇內(nèi)容主要講解“如何約定前后端對接數(shù)據(jù)格式”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“如何約定前后端對接數(shù)據(jù)格式”吧!

成都創(chuàng)新互聯(lián)公司主營蒙山網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,重慶APP開發(fā),蒙山h5微信小程序開發(fā)搭建,蒙山網(wǎng)站營銷推廣歡迎蒙山等地區(qū)企業(yè)咨詢

格式約定

清單1:返回信息格式約定源碼示例

package site.syksy.qingzhou.web.response;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.swagger.v3.oas.annotations.media.Schema;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;

import java.io.Serializable;

/**
 * @author Raspberry
 */
@Schema(title = "返回信息")
public class ResponseMessage implements Serializable {
    private static final long serialVersionUID = 1L;

    @Schema(title = "是否成功")
    private Boolean success;

    @Schema(title = "數(shù)據(jù)")
    private T data;

    @Schema(title = "錯誤碼")
    private String errorCode;

    @Schema(title = "錯誤信息")
    private String errorMessage;

    /**
     * error display type: 0 silent; 1 message.warn; 2 message.error; 4 notification; 9 page
     */
    @Schema(title = "錯誤信息顯示類型")
    private Integer showType;

    /**
     * Convenient for back-end Troubleshooting: unique request ID
     */
    @Schema(title = "唯一請求ID")
    private String traceId;

    /**
     * onvenient for backend Troubleshooting: host of current access server
     */
    @Schema(title = "當(dāng)前訪問

ResponseMessage 類中的屬性是依據(jù) ant design pro 文檔中推薦。

統(tǒng)一包裝

約定好前后端交互數(shù)據(jù)格式后,我們將在每個 HTTP 接口方法中對返回結(jié)果進(jìn)行包裝,但這樣顯得冗余。這些重復(fù)冗余的代碼能否集中處理呢?當(dāng)然是可以的!只需創(chuàng)建一個類,實現(xiàn) **ResponseBodyAdvice **接口,再加上一個注解 **@RestControllerAdvice **就能實現(xiàn)統(tǒng)一對返回結(jié)果進(jìn)行包裝處理,具體請看清單2中的源碼。

清單2:統(tǒng)一包裝返回信息源碼示例

package site.syksy.qingzhou.web.response;

import org.springframework.core.MethodParameter;
import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.server.ServerHttpRequest;
import org.springframework.http.server.ServerHttpResponse;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;

/**
 * @author Raspberry
 */
@RestControllerAdvice
public class GeneralResponseBodyAdvice implements ResponseBodyAdvice {
    private final static String PACKAGE_PATH = "site.syksy.qingzhou";

    @Override
    public boolean supports(MethodParameter methodParameter, Class> aClass) {
        String className = methodParameter.getMethod().getDeclaringClass().getName();
        if (className.startsWith(PACKAGE_PATH)) {
            return true;
        } else {
            return false;
        }
    }

    @Override
    public Object beforeBodyWrite(Object o, MethodParameter methodParameter, MediaType mediaType, Class> aClass, ServerHttpRequest serverHttpRequest, ServerHttpResponse serverHttpResponse) {
        if (o instanceof ResponseMessage) {
            return o;
        }
        if (o instanceof String) {
            return ResponseMessage.success(o).toJSON();
        }
        return ResponseMessage.success(o);
    }
}

**GeneralResponseBodyAdvice **類中的兩個方法解釋如下:

  1. supports:通過檢查 Controller 類包路徑是否匹配 site.syksy.qingzhou,返回 ture ,則會執(zhí)行 beforeBodyWrite 方法。

  2. beforeBodyWrite:先對 Controller 返回結(jié)果進(jìn)行判斷,是否已包裝過(類型屬于 ResponseMessage ),是否是 String 類型( String 類型,后續(xù)轉(zhuǎn)換器不會將其轉(zhuǎn)成 json)。如果以上判斷皆未通過,將對結(jié)果包裝成 ResponseMessage 格式。

清單2示例中通過包路徑來約束,也可通過其它方式來約束。不過注意,一定要約束范圍,否則如 springdoc-openapi 的接口也將包裝,則訪問 swagger ui 時將不能正確解析。

到此,相信大家對“如何約定前后端對接數(shù)據(jù)格式”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!


本文名稱:如何約定前后端對接數(shù)據(jù)格式
文章位置:http://weahome.cn/article/jchjed.html

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部