REST は Representational State Transfer の略語で、「プレゼンテーション層の状態変換」と訳されます。プレゼンテーション層は実際にはリソースなので、「リソースの状態の変換」として理解できます。次に、この記事では、Restful API エラー プロンプトの戻り値の実装アイデアを紹介します。興味のある友人は一緒に学ぶことができます
RESTful アーキテクチャ は、明確な構造を持ち、標準に準拠しています。 、展開も簡単です。
REST は Representational State Transfer の略語で、「プレゼンテーション層の状態変換」と訳されます。プレゼンテーション層は実際にはリソースなので、「リソースの状態の変換」として理解できます。
Web アプリケーション上のあらゆるエンティティは、URI (Uniform Resource Locator) を通じてそれを指すリソースと見なすことができます。
はじめに
Weibo であっても、淘宝網であっても、独自のエラー戻り値の形式仕様とエラー コードの説明があり、携帯電話で使用するのに便利なだけでなく、人々に明確で高度な情報を提供します。程度の感じです。問題に遭遇したときは、まず親会社に相談するのが大企業の規範です。この目的のために、私はタオバオのエラー戻り値の形式を模倣し、Weibo エラー コードで設定された基準に基づいて独自のエラー コードをカスタマイズし、Restful API でテストしました。以下に実装アイデアとテスト結果を紹介します。
実装アイデア
このようなエラー戻り値を実装するために抽象ファクトリパターンを使用します。このパターンを選択したのは、このパターンが一連の関連オブジェクトまたは相互依存オブジェクトを作成するためのインターフェイスを提供しており、これが私のニーズに非常に近いからです。
コード分析
1. このパスの共通ヒントに従って、エラープロンプトプログラムファイルを保存するための新しいエラーフォルダーを作成しました。このフォルダーには主に次のファイルが含まれています:
2. Hint.php エントリ ファイル。抽象クラスを定義し、その中にメソッドを 1 つだけ記述します。
interface Hint { function Error($_errors,$code); }
3. Template.php はヒント インターフェイスを実装します。エラー戻り値の形式はここで定義されます。
class Template implements Hint{ function Error($_errors,$code) { if (empty($_errors)) { print_r(json_encode([])); } else { $errors['error']['name'] = 'Not Found'; $errors['error']['message'] = $_errors; $errors['error']['error_code'] = $code; print_r(json_encode($errors)); } } }
4. createMsg.php 別の createMsg 抽象クラスを作成します。オブジェクトの作成をインターフェイスに抽象化します。
interface createMsg { function Msg(); }
5. FactoryMsg クラスを使用して createMsg インターフェイスを実装します。インスタンス化されたテンプレートを返します。
class FactoryMsg implements createMsg{ function Msg() { return new Template; } }
6. ErrorMsg.php はテンプレートの Error メソッドにパラメータを渡します。
class ErrorMsg { // 抽象工厂里的静态方法 public static function Info($_errors) { $Factory = new FactoryMsg; $result = strstr($_errors,Yii::t('yii','Not exist')); //数据不存在 20001 $result1 = strstr($_errors,Yii::t('yii','Null')); //参数不能为空 20002 $result2 = strstr($_errors,Yii::t('yii','Fail')); //新增、更新、删除失败 20003 $result3 = strstr($_errors,Yii::t('yii','Not right')); //XX不正确 20004 $result4 = strstr($_errors,Yii::t('yii','Robc')); //XX无权限 20005 //数据不存在 20001 if(!empty($result)){ $M = $Factory->Msg(); $M->Error($_errors,'20001');die; } //参数不能为空 20002 if(!empty($result1)){ $M = $Factory->Msg(); $M->Error($_errors,'20002');die; } //新增、更新、删除失败 20003 if(!empty($result2)){ $M = $Factory->Msg(); $M->Error($_errors,'20003');die; } //XX不正确 20004 if(!empty($result3)){ $M = $Factory->Msg(); $M->Error($_errors,'20004');die; } //XX无权限 20005 if(!empty($result4)){ $M = $Factory->Msg(); $M->Error($_errors,'20005');die; } //默认类型 21000 $M = $Factory->Msg(); $M->Error($_errors,'21000'); } }
7.呼び出し方法。
えー8. テスト結果。
りー完了。私は実装プロセス全体で言語パックの形式を使用します。これにより、後の多言語切り替えが容易になります。
FAQ
1. この種の文字列あいまい検索の使用は非常に一般的であり、特定のエラー タイプに対応する特定のコードを返すという要件を満たすことはできません。より良い提案がございましたら、ぜひご提案ください。
use common\hint\error\ErrorMsg; ErrorMsg::Info(Yii::t('yii','failure'));
2. 実装プロセスでは、将来の多言語切り替えの問題は考慮されず、プロンプトは従来の方法で直接送信されました。例: ErrorMsg::Info("Operation failed"); この方法では、複数言語の切り替えを実現できません。言語パックを使用してパラメーターを渡すことをお勧めします。
要約: 上記がこの記事の全内容です。皆様の学習に役立つことを願っています。
関連する推奨事項:
phpcurlを使用してリモートイメージ実装メソッドを取得する
phpテキストを使用して訪問数をカウントする 詳細な説明写真とテキスト付きのメソッド
以上がPHPのRestful APIでエラープロンプトの戻り値を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。