SpringBoot入門:03-統合リクエスト返却
現在、私たちのリターンは直接実体クラスをリクエスト側に投げつけることであり、これは友好的ではなく、統一的なフォーマットがない一方で、リクエスト側がリクエストが成功するかどうか分からないし、判断できるものもないし、説明的なリターンもありません.
本編では、すべてのインタフェースに統一的な友好的なリターンを提供します.
戻り構造の決定
まず、インタフェースが返すフォーマットがどのようなものかを決定し、次のようにします.
•codeフィールドはステータスコードを表し、呼び出し元はこのコードに基づいて後続の論理の根拠とする.例えば、code値が200であることは操作成功を表し、論理エラーがなく、この場合、ユーザーに操作成功を提示することができる.code値が200でない場合は、操作に失敗します.たとえば1001で、ユーザー名がすでに存在することを示します.この場合、フロントエンドは対応する操作を行います.
•msgフィールドは、上記のステータスが1001のような追加の説明として使用され、ここでのmsgはusername existsのような説明的な文字であり、呼び出し元のより良い理解を助けることができる.
•dataフィールドは、code値が200の場合、具体的なビジネスデータを返します.配列でもオブジェクトでも構いません.
リターンコードの作成
上記の戻り構造により、codeとmsgフィールドを列挙タイプで統合し、プロジェクトにcommonディレクトリを作成し、ApiCodeを新規作成することができる.JAvaは次のコードで示されています.
その後、異なるエラーコードが1つずつここに追加され、ここの列挙変数が呼び出されます.少し煩わしいかもしれませんが、プロジェクトが大きくなると、ステータスコードを管理することができます.
戻りクラスの作成
プロジェクトにcommonディレクトリを作成し、HttpResponseを新規作成します.JAvaファイル:
戻りクラスの使用
Controllerのインタフェースの戻りを変更します.エンティティクラスに直接戻るのではなく、戻りクラスにカプセル化して呼び出し元に戻ります.
本編では、すべてのインタフェースに統一的な友好的なリターンを提供します.
戻り構造の決定
まず、インタフェースが返すフォーマットがどのようなものかを決定し、次のようにします.
{
"code": 200,
"msg": "ok",
"data": ""
}
•codeフィールドはステータスコードを表し、呼び出し元はこのコードに基づいて後続の論理の根拠とする.例えば、code値が200であることは操作成功を表し、論理エラーがなく、この場合、ユーザーに操作成功を提示することができる.code値が200でない場合は、操作に失敗します.たとえば1001で、ユーザー名がすでに存在することを示します.この場合、フロントエンドは対応する操作を行います.
•msgフィールドは、上記のステータスが1001のような追加の説明として使用され、ここでのmsgはusername existsのような説明的な文字であり、呼び出し元のより良い理解を助けることができる.
•dataフィールドは、code値が200の場合、具体的なビジネスデータを返します.配列でもオブジェクトでも構いません.
リターンコードの作成
上記の戻り構造により、codeとmsgフィールドを列挙タイプで統合し、プロジェクトにcommonディレクトリを作成し、ApiCodeを新規作成することができる.JAvaは次のコードで示されています.
package com.foxescap.wxbox.common;
/**
*
* @author xfly
*/
public enum ApiCode {
/**
*
*/
API_OK(200, "ok"),
/**
*
*/
API_USERNAME_EXIST(1001, "username exists");
private final int code;
private final String msg;
ApiCode(int code, String msg) {
this.code = code;
this.msg = msg;
}
public int code() {
return this.code;
}
public String getMsg() {
return this.msg;
}
}
その後、異なるエラーコードが1つずつここに追加され、ここの列挙変数が呼び出されます.少し煩わしいかもしれませんが、プロジェクトが大きくなると、ステータスコードを管理することができます.
戻りクラスの作成
プロジェクトにcommonディレクトリを作成し、HttpResponseを新規作成します.JAvaファイル:
package com.foxescap.wxbox.common;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import lombok.AllArgsConstructor;
import lombok.Data;
import java.io.Serializable;
/**
* @author xfly
* @param
*/
@Data
@AllArgsConstructor
@JsonPropertyOrder({"code", "msg", "data"})
public class ApiResponse implements Serializable {
private static final long serialVersionUID = 1L;
/**
*
*/
private int code;
/**
*
*/
private String msg;
/**
*
*/
private T data;
/**
* ,
*
* @return ApiResponse
*/
public static ApiResponse
戻りクラスの使用
Controllerのインタフェースの戻りを変更します.エンティティクラスに直接戻るのではなく、戻りクラスにカプセル化して呼び出し元に戻ります.
@GetMapping("/user/{username}")
public ApiResponse findUserByUsername(@PathVariable(name = "username") String username) {
return ApiResponse.success(userService.findByUsername(username));
}