Heim >Backend-Entwicklung >PHP-Tutorial >So implementieren Sie den Rückgabewert einer Fehleraufforderung in der Restful-API in PHP

So implementieren Sie den Rückgabewert einer Fehleraufforderung in der Restful-API in PHP

墨辰丷
墨辰丷Original
2018-06-04 09:16:001947Durchsuche

REST ist die Abkürzung für Representational State Transfer, was übersetzt „Präsentationsschicht-Zustandstransformation“ bedeutet. Die Präsentationsschicht ist eigentlich eine Ressource und kann daher als „Ressourcenstatustransformation“ verstanden werden. Als nächstes werde ich Ihnen in diesem Artikel die Idee der Implementierung des Restful-API-Fehler-Prompt-Rückgabewerts vorstellen. Interessierte Freunde können gemeinsam lernen

RESTful-Architektur ist eine beliebte Internet-Software-Architektur, sie ist klar strukturiert, standardkonform, leicht verständlich und leicht erweiterbar.

REST ist die Abkürzung für Representational State Transfer, was übersetzt „Presentation Layer State Transformation“ bedeutet. Die Präsentationsschicht ist eigentlich eine Ressource und kann daher als „Ressourcenstatustransformation“ verstanden werden.

Jede Entität in der Webanwendung kann als Ressource betrachtet werden, auf die durch einen URI (Uniform Resource Locator) verwiesen wird.

Vorwort

Ob Weibo oder Taobao, sie haben ihre eigenen Fehlerrückgabewertformatspezifikationen und Fehlercodebeschreibungen Die mobile Version ist einfach zu bedienen und fühlt sich klar und hochwertig an. Wenn wir auf Probleme stoßen, sollten wir uns zuerst an die Muttergesellschaft wenden. Die Normen großer Unternehmen sind die Muttergesellschaft, auf die wir uns beziehen können. Zu diesem Zweck habe ich das Fehlerrückgabewertformat von Taobao nachgeahmt, meinen eigenen Fehlercode basierend auf den von Weibo-Fehlercodes festgelegten Standards angepasst und ihn dann auf der Restful-API getestet. Im Folgenden werde ich Ihnen die Umsetzungsideen und Testergebnisse mitteilen.

Implementierungsidee

Ich verwende das abstrakte Factory-Muster, um einen solchen Fehlerrückgabewert zu implementieren. Ich habe mich für dieses Muster entschieden, weil es eine Schnittstelle zum Erstellen einer Reihe verwandter oder voneinander abhängiger Objekte bietet, was meinen Anforderungen sehr nahe kommt.

Code-Analyse

1. Gemäß diesem Pfad-Commonhint habe ich einen neuen Fehlerordner erstellt, um meine Fehleraufforderungsprogrammdateien zu speichern. Dieser Ordner enthält hauptsächlich diese Dateien:

2. Hint.php-Eintragsdatei. Definieren Sie eine abstrakte Klasse und schreiben Sie darin nur eine Methode.

interface Hint {
function Error($_errors,$code);
}

3. Template.php implementiert die Hint-Schnittstelle. Hier wird das Format des Fehlerrückgabewerts definiert.

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 Erstellen Sie eine weitere abstrakte Klasse „createMsg“. Abstrahieren Sie die Erstellung von Objekten in einer Schnittstelle.

interface createMsg { 
function Msg(); 
}

5. Verwenden Sie die FactoryMsg-Klasse, um die createMsg-Schnittstelle zu implementieren. Gibt die instanziierte Vorlage zurück.

class FactoryMsg implements createMsg{
function Msg() {
return new Template;
}
}

6. ErrorMsg.php übergibt Parameter an die Error-Methode in Template.

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. Aufrufmethode.

use common\hint\error\ErrorMsg;
ErrorMsg::Info(Yii::t('yii','failure'));

Testergebnisse.

{
"error": {
"name": "Not Found",
"message": "操作失败",
"error_code": "20003"
}
}

Fertig. Ich verwende für den gesamten Implementierungsprozess die Form von Sprachpaketen, die den späteren Wechsel in mehrere Sprachen erleichtern.

Häufig gestellte Fragen

1 Die Verwendung dieser Art der String-Fuzzy-Suche ist sehr allgemein und kann die Anforderung, bestimmte entsprechende Codes zurückzugeben, nicht erfüllen spezifische Fehlertypen. Wenn Sie bessere Vorschläge haben, können Sie diese gerne einbringen.

$result = strstr($_errors,Yii::t('yii','Not exist'));

2. Während des Implementierungsprozesses wurde die Frage der zukünftigen Mehrsprachenumschaltung nicht berücksichtigt und Eingabeaufforderungen wurden direkt auf herkömmliche Weise übermittelt. Beispiel: ErrorMsg::Info("Vorgang fehlgeschlagen"); Auf diese Weise kann keine Mehrsprachenumschaltung erreicht werden. Es wird empfohlen, Sprachpakete zur Übergabe von Parametern zu verwenden.

Zusammenfassung: Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, dass er für das Studium aller hilfreich sein wird.

Verwandte Empfehlungen:

phpVerwenden von Curl, um die Implementierungsmethode für Remote-Bilder zu erhalten

phpImplementieren Sie die Methode und ein einfaches Beispiel zum Erhalten des Kontrollkästchenwerts

phpDetaillierte grafische Erläuterung der Verwendung von Text zum Zählen von Besuchen

Das obige ist der detaillierte Inhalt vonSo implementieren Sie den Rückgabewert einer Fehleraufforderung in der Restful-API in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn