Apex共通レスポンス基底クラス作成方法
LWC で Apex クラスを呼出す基底クラスを作成する方法を共有します。
LWC で Apex クラスを呼出すときの返却値は主に正常系、警告系と異常系がありますので、
そのパターンにより共通レスポンス基底クラスを作成します。
実装
共通レスポンスクラスを作成します。
public abstract class BaseClass {
/**
* LWCへのレスポンス.
*/
public virtual class Response {
//成功フラグ
@AuraEnabled
public Boolean success {
get; set;
}
//エラーフラグ
@AuraEnabled
public Boolean error {
get; set;
}
//メッセージ
@AuraEnabled
public String message {
get; set;
}
//返却データ
@AuraEnabled
public Object data {
get; set;
}
}
/**
* 成功時のレスポンス.
*/
public class SuccessResponse extends Response {
/**
* メッセージなしの成功レスポンス.
* @param {Object} data データ
*/
public SuccessResponse(Object data) {
this.success = true;
this.error = false;
this.message = null;
this.data = data;
}
/**
* メッセージ付きの成功レスポンス.
* @param {Object} data データ
* @param {String} message メッセージ
*/
public SuccessResponse(Object data, String message) {
this.success = true;
this.error = false;
this.message = message;
this.data = data;
}
}
/**
* 警告のレスポンス.
*/
public class WarnResponse extends Response {
/**
* データなしの警告レスポンス.
* @param {String} message メッセージ
*/
public WarnResponse(String message) {
this.success = false;
this.error = false;
this.message = message;
this.data = null;
}
/**
* データ付きの警告レスポンス.
* @param {Object} data データ
* @param {String} message メッセージ
*/
public WarnResponse(Object data, String message) {
this.success = false;
this.error = false;
this.message = message;
this.data = data;
}
}
/**
* エラーのレスポンス.
*/
public class ErrorResponse extends Response {
/**
* データなしのエラーレスポンス.
* @param {String} message メッセージ
*/
public ErrorResponse(String message) {
this.success = false;
this.error = true;
this.message = message;
this.data = null;
}
/**
* データ付きのエラーレスポンス.
* @param {Object} data データ
* @param {String} message メッセージ
*/
public ErrorResponse(Object data, String message) {
this.success = false;
this.error = true;
this.message = message;
this.data = data;
}
}
}
共通レスポンス呼び出す
public with sharing class Demo extends BaseClass{
@AuraEnabled
public static Response demoMethod(String test) {
try {
Integer count = [SELECT count() FROM User];
if (count > 0) {
List<User> result = [SELECT Id, Name FROM User];
return new SuccessResponse(result, '検索に成功しました。');
} else {
return new WarnResponse('データが存在しません。');
}
} catch (Exception e) {
return new ErrorResponse('予期せぬエラーが発生しました。システム管理者へお問い合わせください。 ');
}
}
}