이 라이브러리는 HTTP API, RFC 9457에 대한 IETF 문제 세부 정보를 간단하고 간단하게 구현합니다.
RFC 9457은 웹에서 RESTful API의 오류 응답 형식을 지정하기 위한 간단한 사양입니다. 이 라이브러리는 해당 사양과 상호 작용하는 간단하고 편리한 방법을 제공합니다. JSON 및 XML 변형 모두에서 RFC 9457 메시지 생성 및 구문 분석을 지원합니다.
그게 무슨 말이에요? 누군가 귀하의 API에 잘못된 요청을 보냈습니까? 문제가 있다고 말해주세요!
use Crell ApiProblem ApiProblem ;
$ problem = new ApiProblem ( " You do not have enough credit. " , " http://example.com/probs/out-of-credit " );
// Defined properties in the API have their own setter methods.
$ problem
-> setDetail ( " Your current balance is 30, but that costs 50. " )
-> setInstance ( " http://example.net/account/12345/msgs/abc " );
// But you can also support any arbitrary extended properties!
$ problem [ ' balance ' ] = 30 ;
$ problem [ ' accounts ' ] = [
" http://example.net/account/12345 " ,
" http://example.net/account/67890 "
];
$ json_string = $ problem -> asJson ();
// Now send that JSON string as a response along with the appropriate HTTP error
// code and content type which is available via ApiProblem ::CONTENT_TYPE_JSON.
// Also check out asXml() and ApiProblem ::CONTENT_TYPE_XML for the angle-bracket fans in the room.
또는 더 나은 방법은 특정 문제 유형에 대해 ApiProblem 하위 클래스로 분류한 다음(유형과 제목이 함께 사용되어 상대적으로 고정되어 있기 때문에) 오류 관련 데이터를 직접 채울 수 있다는 것입니다. 예외를 확장하는 것과 같습니다!
자체 JSON 직렬화를 수행하려는 라이브러리나 프레임워크를 사용하는 경우에도 완벽하게 지원됩니다. ApiProblem JsonSerializable
구현하므로 기본 배열인 것처럼 json_encode()
에 직접 전달할 수 있습니다.
$ response = new MyFrameworksJsonResponse ( $ problem );
// Or do it yourself
$ body = json_encode ( $ problem );
아마도 응답에 PSR-7을 사용하고 있을 것입니다. 그렇기 때문에 이 라이브러리에는 선택한 PSR-17 팩토리를 사용하여 ApiProblem
개체를 PSR-7 ResponseInterface
개체로 변환하는 유틸리티가 포함되어 있습니다. 다음과 같습니다:
use Crell ApiProblem HttpConverter ;
$ factory = getResponseFactoryFromSomewhere ();
// The second parameter says whether to pretty-print the output.
$ converter = new HttpConverter ( $ factory , true );
$ response = $ converter -> toJsonResponse ( $ problem );
// or
$ response = $ converter -> toXmlResponse ( $ problem );
그러면 완전히 기능하고 표시된 응답 개체가 반환되어 클라이언트에 다시 보낼 준비가 됩니다.
API 문제 오류로 응답하는 API에 메시지를 보내고 있습니까? 괜찮아요! 다음과 같이 해당 응답을 쉽게 처리할 수 있습니다.
use Crell ApiProblem ApiProblem ;
$ problem = ApiProblem :: fromJson ( $ some_json_string );
$ title = $ problem -> getTitle ();
$ type = $ problem -> getType ();
// Great, now we know what went wrong, so we can figure out what to do about it.
(fromXml()에서도 작동합니다!)
다른 Composer 패키지와 마찬가지로 ApiProblem 설치합니다.
composer require crell/api-problem
자세한 내용은 작곡가 문서를 참조하세요.
보안 관련 문제를 발견한 경우 문제 대기열 대신 GitHub 보안 보고 양식을 사용하세요.
이 라이브러리는 MIT 라이센스에 따라 배포됩니다. 한마디로 "저작권 표시는 그대로 두고, 아니면 재미있게 즐기세요."라는 뜻입니다. 자세한 내용은 라이센스를 참조하세요.
풀 요청이 허용됩니다! 목표는 IETF 사양을 완벽하게 준수하는 것입니다.