Pustaka ini menyediakan implementasi Detail Masalah IETF yang sederhana dan mudah untuk API HTTP, RFC 9457.
RFC 9457 adalah spesifikasi sederhana untuk memformat respons kesalahan dari RESTful API di web. Pustaka ini menyediakan cara sederhana dan nyaman untuk berinteraksi dengan spesifikasi tersebut. Ini mendukung pembuatan dan penguraian pesan RFC 9457, baik dalam varian JSON dan XML.
Apa yang kamu katakan? Seseorang mengirimi API Anda permintaan yang buruk? Katakan pada mereka bahwa ini masalahnya!
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.
Atau, yang lebih baik lagi, Anda dapat membuat subkelas ApiProblem untuk jenis masalah tertentu (karena jenis dan judul seharusnya berjalan bersamaan dan relatif tetap), lalu cukup isi data khusus kesalahan Anda sendiri. Sama seperti memperluas pengecualian!
Jika Anda menggunakan perpustakaan atau kerangka kerja yang ingin melakukan serialisasi JSON sendiri, itu juga didukung sepenuhnya. ApiProblem mengimplementasikan JsonSerializable
, sehingga Anda dapat meneruskannya langsung ke json_encode()
seolah-olah itu adalah array kosong.
$ response = new MyFrameworksJsonResponse ( $ problem );
// Or do it yourself
$ body = json_encode ( $ problem );
Anda mungkin menggunakan PSR-7 untuk tanggapan Anda. Itu sebabnya perpustakaan ini menyertakan utilitas untuk mengonversi objek ApiProblem
Anda menjadi objek ResponseInterface
PSR-7, menggunakan pabrik PSR-17 pilihan Anda. Seperti:
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 );
Itu mengembalikan objek Response yang berfungsi penuh dan ditandai, siap dikirim kembali ke klien.
Apakah Anda mengirim pesan ke API yang merespons dengan kesalahan Masalah API? Tidak masalah! Anda dapat dengan mudah menangani respons itu seperti:
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.
(Ini juga berfungsi untuk fromXml()!)
Instal ApiProblem seperti paket Komposer lainnya:
composer require crell/api-problem
Lihat dokumentasi Komposer untuk lebih jelasnya.
Jika Anda menemukan masalah apa pun terkait keamanan, silakan gunakan formulir pelaporan keamanan GitHub, bukan antrian masalah.
Perpustakaan ini dirilis di bawah lisensi MIT. Singkatnya, "biarkan pernyataan hak cipta tetap utuh, jika tidak, bersenang-senanglah." Lihat LISENSI untuk informasi lebih lanjut.
Permintaan tarik diterima! Tujuannya adalah kesesuaian penuh dengan spesifikasi IETF.