挑戰目標: MockNative Camp
想想現在應該有三年多JAVA經驗,現在公司的專案也是用JAVA 11開發,但最近在看JAVA文件時才發現原來從JAVA 8後新增的酷玩意我都沒用過呢...
像是Lambda、Stream等等的,真的是要常常去看一些更新文件學習新用法呢。
今天我們來做一個通用的response格式,http status code在現實工作中並沒辦法涵蓋所有情況,尤其是商業邏輯錯誤所要回傳的訊息不盡相同,所以我們需要自己handle response格式,並在裡面加上自己定義的code還有message,如果前端有自己做i18n的話,可以直接從code maping到語系的訊息。
我自己的習慣是會新增這些object
CommonResponse.java
package com.mock.nativecamp.payload;
import com.mock.nativecamp.payload.sub.Info;
import com.mock.nativecamp.payload.sub.ResData;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor()
@NoArgsConstructor
public class CommonResponse {
    private Info info;
    private ResData data;
    public CommonResponse successRes() {
        CommonResponse commonResponse = new CommonResponse();
        Info info = new Info();
        info.setCode("00");
        info.setMessage("success");
        commonResponse.setInfo(info);
        return commonResponse;
    }
    public  CommonResponse errorRes(String msg, String code) {
        CommonResponse commonResponse = new CommonResponse();
        Info info = new Info();
        info.setCode(code);
        info.setMessage(msg);
        commonResponse.setInfo(info);
        return commonResponse;
    }
}
Info.java
package com.mock.nativecamp.payload.sub;
import lombok.Data;
@Data
public class Info {
    private String status;
    private String code;
    private String message;
}
ResData.java
package com.mock.nativecamp.payload.sub;
import lombok.Data;
@Data
public class ResData {
    private Object data;
}
明天我們再來實作到每一個API的response中,之後會做全局性的error handling。