>백엔드 개발 >PHP 튜토리얼 >PHP의 Restful API에서 오류 프롬프트 반환 값을 구현하는 방법

PHP의 Restful API에서 오류 프롬프트 반환 값을 구현하는 방법

墨辰丷
墨辰丷원래의
2018-06-04 09:16:001951검색

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") 이러한 방식으로 다중 언어 전환을 수행할 수 없습니다. 매개변수를 전달하려면 언어 팩을 사용하는 것이 좋습니다.

요약: 위 내용이 이 글의 전체 내용입니다. 모든 분들의 공부에 도움이 되었으면 좋겠습니다.

관련 권장사항:

phpcurl을 사용하여 원격 이미지 구현 방법 얻기

php체크박스 값을 얻는 방법 및 간단한 예

php텍스트를 사용하여 방문 횟수 계산 자세한 설명 사진과 텍스트로 방법

위 내용은 PHP의 Restful API에서 오류 프롬프트 반환 값을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.