SpringBootフロントエンドとバックエンドの分離と統一されたリターンデータ形式

1.統一された返品フォーマットが必要なのはなぜですか

コントローラメソッドでは、フロントエンドに返されるデータ型は可変です。たとえば、検証コードはブールデータ型を返し、ページングデータはリストデータ型を返します。複数の戻り型は、フロントエンドとの間の通信を行います。バックエンドの担当者は複雑で統一されています。フロントエンドに返されるデータ形式を規定することで、面倒な通信作業を大幅に削減し、作業効率を向上させることができます。


#2。2つの一般的な結果クラス**説明:Swagger3およびLombokアノテーションは、個人的な変更の必要性に応じて、ここで使用されます** ** 1.ResultEnumCode列挙クラス**
package com.infoshare.return_result;


import lombok.Getter;

@Getter
public enum ResultCodeEnum {
    
    

    SUCCESS(true,20000,"成功"),
    UNKNOW_REASON(false,20001,"未知错误"),
    BAD_SQL_GRAMMER(false,21001,"sql语法错误"),
    JSON_PARSE_ERROR(false,21002,"json解析异常"),
    PARAM_ERROR(false,21003,"参数不正确"),
    FILE_UPLOAD_ERROR(false,21004,"文件上传错误"),
    EXCEL_DATA_IMPORT_ERROR(false,21005,"Excel数据导入错误"),
    ERROR_AUTH_CODE(false,21006,"验证码错误!"),
    ERROR_NOT_EXISTS_USER(false,21007,"用户不存在!"),
    ERROR_PASSWORD(false,21008,"密码错误,请重新输入!"),
    SUCCESS_LOGIN(true,20000,"登陆成功!"),
    SUCCESS_REGISTER(true,20000,"注册成功!");
    
    private Boolean status; //响应是否成功
    private Integer code; //返回码
    private String message; //返回消息

    ResultCodeEnum(Boolean status, Integer code, String message) {
    
    
        this.status = status;
        this.code = code;
        this.message = message;
    }

}


2.結果クラス

package com.infoshare.return_result;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.HashMap;
import java.util.Map;

@Data
@ApiModel(value = "统一返回数据格式")
public class Result {
    
    

    @ApiModelProperty(value = "是否成功")
    private Boolean success;

    @ApiModelProperty(value = "返回码")
    private Integer code;

    @ApiModelProperty(value = "返回消息")
    private String message;

    @ApiModelProperty(value = "返回数据")
    private Map<String,Object> data = new HashMap<String ,Object>();

    private Result(){
    
    }

    public static Result ok(){
    
    
        Result r = new Result();
        r.setCode(ResultCodeEnum.SUCCESS.getCode());
        r.setSuccess(ResultCodeEnum.SUCCESS.getStatus());
        r.setMessage(ResultCodeEnum.SUCCESS.getMessage());
        return r;
    }

    public static Result error(){
    
    
        Result r = new Result();
        r.setCode(ResultCodeEnum.UNKNOW_REASON.getCode());
        r.setSuccess(ResultCodeEnum.UNKNOW_REASON.getStatus());
        r.setMessage(ResultCodeEnum.UNKNOW_REASON.getMessage());
        return r;
    }

    public static Result ok(ResultCodeEnum codeEnum){
    
    
        Result r = new Result();
        r.setCode(codeEnum.getCode());
        r.setSuccess(codeEnum.getStatus());
        r.setMessage(codeEnum.getMessage());
        return r;
    }

    public static Result error(ResultCodeEnum codeEnum){
    
    
        Result r = new Result();
        r.setCode(codeEnum.getCode());
        r.setSuccess(codeEnum.getStatus());
        r.setMessage(codeEnum.getMessage());
        return r;
    }
    public Re
    sult data(Map<String,Object> map){
    
    
        this.setData(map);
        return this;
    }

    public Result data(String key,Object value){
    
    
        this.data.put(key,value);
        return this;
    }

    public Result message(String message){
    
    
        this.setMessage(message);
        return this;
    }

    public Result code(Integer code){
    
    
        this.setCode(code);
        return this;
    }

    public Result success(Boolean success){
    
    
        this.setSuccess(success);
        return this;
    }

}


3.コントローラーレイヤーが結果の例を返します

ここに画像の説明を挿入します


4.フロントエンドで結果データを受信する例

ここに画像の説明を挿入します


5. Swagger3インターフェイスドキュメントは、返されたデータ形式の検証を示しています

ここに画像の説明を挿入します


総括する

統一されたデータ形式を使用して返すことで、フロントエンドとバックエンドの独立した開発の効率が大幅に向上し、プロジェクトの全体的な開発が簡潔になります。バックエンドは、いくつかのエラーと成功メッセージおよびステータスコードをカスタマイズできます。要件ドキュメントに従って、それらをResultCodeEnumに配置します。列挙クラスで、Result.ok()またはResult.error()静的メソッドを呼び出して、対応する列挙定数を返し、プロジェクトのメンテナンスを簡潔にします。

おすすめ

転載: blog.csdn.net/weixin_43967679/article/details/108693789