Nota Bene: Proyek ini menggunakan SEMVER dan Changelog. Tapi itu bukan versi utama yang stabil. Pembaruan kecil apa pun (Fe 0,5.* -> 0.6.*) dapat memecahkan kompatibilitas ke belakang!
Kerangka kerja PHP7 sederhana untuk layanan istirahat bangunan cepat berdasarkan middleware, PSR-7 dan bereaksi.
Instance Runned dapat ditemukan dengan tautan, juga lihat contoh repo.
$ composer require free-elephants/rest-daemon
Lihat contoh dalam contoh/rest-server.php dan dokumentasi.
# your rest-server.php script
$server = new RestServer('127.0.0.1', 8080, '0.0.0.0', ['*']); // <- it's default arguments values
$server->run();
# can be runned as
$ php ./rest-server.php
Handler metode titik akhir dapat berupa implementasi yang dapat dipanggil seperti middleware: fungsi atau kelas dengan metode __invoke ().
<?php
class GetAttributeHandler extends AbstractEndpointMethodHandler
{
public function __invoke ( ServerRequestInterface $ request , ResponseInterface $ response , callable $ next )
{
$ name = $ request -> getAttribute ( ' name ' , ' World ' );
$ response -> getBody ()-> write ( ' {
"hello": " ' . $ name . ' !"
} ' );
return $ next ( $ request , $ response );
}
}
$ greetingAttributeEndpoint = new BaseEndpoint ( ' /greeting/{name} ' , ' Greeting by name in path ' );
$ greetingAttributeEndpoint -> setMethodHandler ( ' GET ' , new GetAttributeHandler ());
$ server -> addEndpoint ( $ greetingAttributeEndpoint );Lihat Cara Membangun Server Untuk Langkah demi Langkah dalam Satu Skrip
Anda dapat menggunakan PHP-DI (atau implementasi kontainer PSR-11 lainnya) dan konfigurasi file routing dengan restServerBuilder untuk lebih banyak mengkonfigurasi dan pengkodean.
Lihat Contoh dengan Routing Berbasis File dan Konfigurasi Ketergantungan: Rest-Server.php
Anda dapat menautkan dengan setiap metode dalam rute penangan, dan secara opsional mengatur rute berdasarkan modul. Secara default server berisi 1 modul default untuk semua titik akhir. Lihat Contoh: routes.php
Secara instance server default menyediakan koleksi dengan beberapa middleware yang berguna. Anda dapat memperpanjang atau menimpanya:
<?php
$ requestCounter = function (
ServerRequestInterface $ request ,
ResponseInterface $ response ,
callable $ next
) {
static $ requestNumber = 0 ;
printf ( ' [%s] request number #%d handled ' . PHP_EOL , date ( DATE_ISO8601 ), ++ $ requestNumber );
return $ next ( $ request , $ response );
};
$ extendedDefaultMiddlewareCollection = new DefaultEndpointMiddlewareCollection ([], [ $ requestCounter ]);
$ server -> setMiddlewareCollection ( $ extendedDefaultMiddlewareCollection ); Metode handler setiap titik akhir akan dibungkus ke koleksi ini dan dipanggil antara ditentukan sebagai after dan before middleware. Anda juga dapat mengonfigurasi koleksi middleware default dengan akses ke setiap middleware bawaan dengan kunci: Koleksi ini mengimplementasikan antarmuka arrayAccess.
<?php
$ server -> getMiddlewareCollection ()-> getBefore ()-> offsetUnset ( FreeElephants RestDaemon Middleware MiddlewareRole:: NO_CONTENT_STATUS_SETTER );... Akan dilaksanakan...
... Akan dilaksanakan...