ホームページ > バックエンド開発 > PHPチュートリアル > Restful API エラー プロンプトの戻り値 PHP での実装アイデアrestful API の例restful インターフェイスジャージrestful

Restful API エラー プロンプトの戻り値 PHP での実装アイデアrestful API の例restful インターフェイスジャージrestful

WBOY
リリース: 2016-07-29 08:53:33
オリジナル
820 人が閲覧しました

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"); この方法では、複数言語の切り替えを実現できません。言語パックを使用してパラメーターを渡すことをお勧めします。

上記は、Restful コンテンツを含む、PHP での Restful API エラー プロンプトの戻り値の実装アイデアを紹介したもので、PHP チュートリアルに興味のある友人に役立つことを願っています。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート