挑戰目標: 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。