ditingkatkan dari versi 3 RC6 untuk dukungan PHP terbaru
Restler adalah Server API Web multi-format sederhana dan efektif yang ditulis dalam PHP.
Tangani saja logika bisnis Anda di php, restler akan mengurus sisanya!
@url GET my/custom/url/{param}
Versi paling stabil dan terbaru ada di cabang master
, versi sebelumnya ada di cabang versi seperti v4
, v3
, v2
, dan v1
.
Cabang versi dengan versi saat ini seperti v5
digunakan untuk membangun rilis berikutnya. Dokumentasinya mungkin tidak sering diperbarui sehingga hanya diperuntukkan bagi mereka yang berani.
Cabang fitur seperti features/html
dan features/router
murni untuk tujuan eksperimen dalam mencoba suatu fitur. Mereka mungkin digabungkan jika sudah siap.
Instal repositori ini untuk mencoba contohnya.
Pastikan PHP 5.4 atau lebih tinggi tersedia di server Anda. Kami merekomendasikan menggunakan versi terbaru untuk kinerja yang lebih baik.
Restler menggunakan Komposer untuk mengelola dependensinya. Pertama, unduh salinan composer.phar
. Itu dapat disimpan di folder proyek Anda atau idealnya di usr/local/bin
untuk menggunakannya secara global untuk semua proyek Anda. Jika Anda menggunakan Windows, Anda dapat menggunakan penginstal Windows Composer.
Anda dapat menginstal Restler dengan menjalankan perintah buat proyek di terminal Anda. Ganti {projectName} dengan nama proyek Anda yang sebenarnya. Ini akan membuat folder dengan nama itu dan menginstal Restler.
php composer.phar create-project luracast/restler {projectName}
Catatan:-
Jika Anda tidak menginginkan format tambahan dan alat BDD, Anda dapat menyertakan >
--no-dev
untuk menerapkan pengecualian paket dev.Jika Anda ingin mencoba cabang bleed edge v3 atau salah satu fitur > cabang, sertakan
3.x-dev
ataudev-features/html
pada perintah di atas
Setelah menginstal Komposer, unduh versi terbaru kerangka Restler dan ekstrak isinya ke direktori di server Anda. Selanjutnya, di root proyek Restler Anda, jalankan perintah php composer.phar install
(atau composer install
) untuk menginstal semua dependensi kerangka kerja. Proses ini memerlukan instalasi Git di server agar instalasi berhasil diselesaikan.
Jika Anda ingin memperbarui kerangka Restler, Anda dapat mengeluarkan perintah php composer.phar update
.
Catatan:- Jika Anda tidak diperbolehkan menginstal composer dan git di server Anda, Anda dapat menginstal dan menjalankannya di mesin pengembangan Anda. File dan folder yang dihasilkan dapat diunggah dan digunakan di server.
Idealnya folder publik harus dipetakan sebagai root web Anda, Ini opsional, tetapi disarankan untuk menghindari pemaparan file dan folder yang tidak diperlukan.
Coba contoh langsung di localhost Anda.
Anda dapat meluncurkan server bawaan PHP dengan perintah
composer serve
.
Perbarui base_url yang ditentukan di behat.yml
lalu coba perintah berikut
vendor/bin/behat
alternatifnya, Anda dapat menjalankan
composer test
Hal ini akan menguji contoh terhadap perilaku yang diharapkan, misalnya
Feature : Testing CRUD Example
Scenario : Creating new Author with JSON
Given that I want to make a new "Author"
And his "name" is "Chris"
And his "email" is "[email protected]"
And the request is sent as JSON
When I request "/examples/_007_crud/authors"
Then the response status code should be 200
And the response should be JSON
And the response has a "id" property
Semua siap, Selamat RESTling! :)
Kami memiliki dua opsi untuk membuat server api restler Anda sendiri
Pilihan paling mudah adalah menggunakan templat aplikasi seperti Aplikasi Restler yang memiliki integrasi dengan banyak paket untuk membantu kami dengan logika bisnis juga. Jika Anda memilih opsi ini, pilih cabang di repositori itu dan lanjutkan dengan instruksi yang tersedia di sana.
Buat proyek dari awal sehingga Anda memiliki kendali penuh atas setiap aspek aplikasi Anda. Jika Anda memilih opsi ini, ikuti langkah-langkah di bawah ini.
composer init
dan ikuti untuk membuat composer.json
restler/framework
dan ^5
untuk batasan versi.composer require restler/framework:^5
kami menggunakan
restler/framework
alih-alihluracast/restler
untuk mengurangi ruang yang dibutuhkan untuk paket. Itu berasal dari https://github.com/Luracast/Restler-Framework yang hanya berisi konten folder src di sini.
Bahkan ketika Anda membangun dari awal, memeriksa templat aplikasi akan membantu pengambilan keputusan struktur folder dan menemukan paket berguna lainnya.
Buat kelas API Anda dengan semua metode publik dan terlindungi yang diperlukan
Buat gateway (public/index.php) sebagai berikut
<?php
require_once __DIR__ . ' /../vendor/autoload.php ' ;
use Luracast Restler Restler ;
$ r = new Restler ();
$ r -> addAPIClass ( ' YourApiClassNameHere ' ); // repeat for more
$ r -> handle (); //serve the response
Aktifkan Penulisan Ulang URL
Pastikan semua permintaan masuk ke index.php dengan mengaktifkan Penulisan Ulang URL untuk situs web Anda
Misalnya:-
Jika Anda menggunakan Apache, Anda dapat menggunakan file .htaccess seperti
DirectoryIndex index.php
< IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^$ index.php [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [QSA,L]
</ IfModule >
< IfModule mod_php5.c>
php_flag display_errors On
</ IfModule >
Catatan:- Ini mengharuskan
AllowOverride
disetel keAll
bukanNone
di filehttpd.conf
, dan mungkin memerlukan beberapa penyesuaian pada beberapa konfigurasi server. Lihat dokumentasi mod_rewrite untuk info lebih lanjut.
Jika Anda menggunakan Nginx, Anda harus memastikan Anda menyetel server_name
dan meneruskan skrip PHP ke cgi cepat (PHP-FPM) yang mendengarkan pada 127.0.0.1:9000
server {
listen 80;
server_name api.luracast.com; //change it to match your server name
//... other stuff
location ~ .php$ {
root /var/www/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html/$fastcgi_script_name;
include fastcgi_params;
}
//... other stuff
}
Catatan:- Ini memerlukan PHP, PHP-FPM untuk diinstal dan dikonfigurasi dengan benar. Lihat contoh PHP FastCGI untuk info lebih lanjut.
Sesuaikan dengan kebutuhan Anda
<?php
require_once __DIR__ . ' /../vendor/autoload.php ' ;
use Luracast Restler Restler ;
use Luracast Restler Defaults ;
//set the defaults to match your requirements
Defaults:: $ throttle = 20 ; //time in milliseconds for bandwidth throttling
//setup restler
$ r = new Restler ();
$ r -> addAPIClass ( ' YourApiClassNameHere ' ); // repeat for more
$ r -> addAPIClass ( ' Explorer ' ); //from restler framework for API Explorer
$ r -> addFilterClass ( ' RateLimit ' ); //Add Filters as needed
$ r -> handle (); //serve the response
Jelajahi api dan cobalah dengan membuka explorer/index.html
dari root web di browser Anda
Selamat Menjelajah! :)
Catatan:- Menggunakan eAccelerator dapat membuat restler gagal karena menghapus komentar. Info lebih lanjut dapat ditemukan di sini
Restler mendukung anotasi dalam bentuk komentar PHPDoc untuk penyempurnaan API
Mereka didokumentasikan secara rinci di bawah Anotasi
Untuk melindungi api Anda, autentikasi dan izinkan pengguna yang valid
<?php
require_once ' ../restler.php ' ;
use Luracast Restler Restler ;
$ r = new Restler ();
$ r -> addAPIClass ( ' YourApiClassNameHere ' ); // repeat for more
$ r -> addAuthenticationClass ( ' CustomAuth ' ); //Add Authentication classes as needed
$ r -> handle (); //serve the response
Secara default Restler berjalan dalam mode debug yang lebih disesuaikan untuk pengembang API, dengan menampilkan pesan kesalahan terperinci dan mempercantik hasil api ke bentuk readbale manusia
Dengan mengaktifkan mode produksi, Anda akan mendapatkan peningkatan kinerja karena akan menyimpan cache rute (penguraian komentar hanya terjadi sekali, bukan setiap panggilan api), beberapa file lain, dan menghindari memberikan informasi debug
<?php
require_once ' ../restler.php ' ;
use Luracast Restler Restler ;
//setup restler
$ r = new Restler ( true ); //turn on production mode by passing true.
//If you are using file based cache (the default) make sure cache folder is
//writable. when you make changes to your code make sure you delete the
// routes.php inside the cache folder
//...
Catatan:- Ketika mode produksi disetel ke
true
mode ini selalu menggunakan cache dan tidak mendeteksi perubahan dan rute baru jika ada. Pipeline integrasi berkelanjutan atau git hook Anda harus menghapus file ini selama proses penerapan. Alternatifnya, Anda dapat meneruskan parameter kedua ke konstruktor restler untuk menyegarkan cache ketika perubahan perlu diterapkan.
composer serve
.composer test
setelah menjalankan server dengan composer serve
di jendela lain.$restler->addAPIClass("Luracast/Restler/Explorer", 'swagger')
memetakannya ke /swagger
.Kelas rute ditingkatkan untuk menyediakan metode findAll untuk mencantumkan semua rute untuk versi API tertentu, tidak termasuk jalur dan metode http yang ditentukan.
Properti ajaib digunakan oleh rute saat ditemukan, mengabaikan properti sebenarnya. Ini berguna untuk kelas Model Dinamis seperti Eloquent.
Rute sekarang mengizinkan @required
dan @properties
menjadi array ketika parameternya adalah objek. Ini membantu kita memilih properti untuk setiap metode api secara berbeda. Contoh {@properties property1,property2,property3}
{@required property1,property2}
membuat api hanya mencari 3 properti dan 2 diantaranya diperlukan.
Mengoptimalkan kelas Nav. Sekarang menggunakan Routes::findAll()
, bersama dengan kelas Explorer
Kelas Restler memiliki metode setBaseUrls untuk menyetel url dasar yang dapat diterima yang dapat disetel menggunakan $_SERVER['HTTP_HOST']
. Baca artikel ini untuk memahami alasannya. Ini berguna dalam kasus-kasus berikut ketika
Kelas Restler sekarang memungkinkan penggantian kode status dengan mengatur $this->restler->responseCode
dari metode api.
Kelas Formulir yang ditingkatkan untuk mengirim properti yang disematkan ke templat emmet. Misalnya
/**
* {@id form1}
*
* @param string $name
* @param int $age
*/
Menghasilkan formulir berikut
<form role="form" id="form1" method="POST" ...
karena template emmet memiliki id di dalamnya (lihat di bawah)
form[role=form id=$id# name=$name# method=$method# action=$action# enctype=$enctype#]
@param
untuk mengatur atribut html (misalnya id, terima, dll) dengan mudah@class
. Contoh: - @class Validator {@holdException}
membuat validator menahan pengecualian alih-alih melempar@property
, @property-read
, @property-write
untuk mendukung pendokumentasian properti dinamis.string[]
, DateTime[]
Scope::$resolver
.String
menjadi Text
untuk dukungan PHP 7 (String adalah kata kunci yang dicadangkan di php7)