REST는 Representational State Transfer의 약어로 "프레젠테이션 레이어 상태 변환"으로 번역됩니다. 프리젠테이션 계층은 실제로 리소스이므로 "리소스 상태 변환"으로 이해될 수 있습니다. 다음으로 이 글에서는 Restful API 오류 프롬프트 반환 값의 구현 아이디어를 소개합니다. 관심 있는 친구들은 함께 배울 수 있습니다
RESTful 아키텍처는 인기 있는 인터넷 소프트웨어 아키텍처이며 표준을 따릅니다. , 이해하기 쉽습니다.
REST는 Representational State Transfer의 약어로 "프레젠테이션 레이어 상태 변환"으로 번역됩니다. 프리젠테이션 계층은 실제로 리소스이므로 "리소스 상태 변환"으로 이해될 수 있습니다.
웹 애플리케이션의 모든 엔터티는 리소스로 간주될 수 있으며 URI(Uniform Resource Locator)를 통해 이를 가리킬 수 있습니다.
서문
Weibo이든 Taobao이든 고유한 오류 반환 값 형식 사양과 오류 코드 설명이 있습니다. 이는 휴대폰에서 사용하기 편리할 뿐만 아니라 사람들에게 명확하고 높은 정보를 제공합니다. -끝 느낌 . 문제가 생기면 먼저 모회사에 가야 합니다. 대기업의 규범은 우리가 참고해야 할 모회사입니다. 이를 위해 타오바오의 오류 반환 값 형식을 모방하고, 웨이보 오류 코드에서 정한 표준에 따라 나만의 오류 코드를 맞춤화한 후 Restful API에서 테스트했습니다. 아래에서는 구현 아이디어와 테스트 결과를 공유하겠습니다.
Implementation Idea
저는 이러한 오류 반환 값을 구현하기 위해 추상 팩토리 패턴을 사용합니다. 이 패턴을 선택한 이유는 이 패턴이 일련의 관련되거나 상호 의존적인 개체를 생성하기 위한 인터페이스를 제공하고 이것이 내 요구 사항에 매우 가깝기 때문입니다.
Code Analysis
1. 이 경로 commonhint에 따라 오류 프롬프트 프로그램 파일을 저장하기 위해 새 오류 폴더를 만들었습니다. 이 폴더에는 주로 다음 파일이 포함되어 있습니다:
2 Hint.php 항목 파일. 추상 클래스를 정의하고 그 안에 하나의 메서드만 작성합니다.
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. 호출 방법.
use common\hint\error\ErrorMsg; ErrorMsg::Info(Yii::t('yii','failure'));
8. 테스트 결과.
{ "error": { "name": "Not Found", "message": "操作失败", "error_code": "20003" } }
완료. 전체 구현 프로세스에 언어 팩 형식을 사용하는데, 이는 나중에 다중 언어 전환을 용이하게 합니다.
FAQ
1. 이러한 종류의 문자열 퍼지 검색을 사용하는 것은 매우 일반적이며 특정 오류 유형에 해당하는 특정 코드를 반환하는 요구 사항을 충족할 수 없습니다. 더 나은 제안이 있으면 언제든지 제안해 주시기 바랍니다.
$result = strstr($_errors,Yii::t('yii','Not exist'));
2. 구현 과정에서 향후 다중 언어 전환 문제는 고려되지 않았으며 프롬프트가 기존 방식으로 직접 전송되었습니다. 예: ErrorMsg::Info("Operation failed") 이러한 방식으로 다중 언어 전환을 수행할 수 없습니다. 매개변수를 전달하려면 언어 팩을 사용하는 것이 좋습니다.
요약: 위 내용이 이 글의 전체 내용입니다. 모든 분들의 공부에 도움이 되었으면 좋겠습니다.
관련 권장사항:
php텍스트를 사용하여 방문 횟수 계산 자세한 설명 사진과 텍스트로 방법
위 내용은 PHP의 Restful API에서 오류 프롬프트 반환 값을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!