actualizado desde la versión 3 RC6 para soporte PHP más reciente
Restler es un servidor API web multiformato simple y eficaz escrito en PHP.
Simplemente ocúpese de su lógica de negocios en php, ¡restler se encargará del RESTO!
@url GET my/custom/url/{param}
comentarios PHPDoc La versión más estable y reciente se encuentra en la rama master
, las versiones anteriores se encuentran en las ramas de versiones como v4
, v3
, v2
y v1
.
La rama de versión con la versión actual, como v5
se utiliza para crear la próxima versión. Es posible que su documentación no se actualice con frecuencia y, por lo tanto, esté reservada para los más atrevidos.
Las ramas de características como features/html
y features/router
tienen únicamente fines de experimentación para probar una característica. Pueden fusionarse cuando estén listos.
Instale este repositorio para probar los ejemplos.
Asegúrese de que PHP 5.4 o superior esté disponible en su servidor. Recomendamos utilizar la última versión para un mejor rendimiento.
Restler usa Composer para gestionar sus dependencias. Primero, descargue una copia de composer.phar
. Puede guardarse en la carpeta de su proyecto o, idealmente, en usr/local/bin
para usarlo globalmente en todos sus proyectos. Si está en Windows, puede utilizar el instalador de Windows Composer.
Puede instalar Restler ejecutando el comando crear proyecto en su terminal. Reemplace {projectName} con el nombre real de su proyecto. Creará una carpeta con ese nombre e instalará Restler.
php composer.phar create-project luracast/restler {projectName}
Nota:-
Si no desea los formatos y herramientas BDD adicionales, puede incluir >
--no-dev
para imponer la exclusión de paquetes de desarrollo.Si desea probar la rama v3 de vanguardia o cualquiera de las ramas de características, incluya
3.x-dev
odev-features/html
en el comando anterior
Después de instalar Composer, descargue la última versión del marco Restler y extraiga su contenido en un directorio de su servidor. A continuación, en la raíz de su proyecto Restler, ejecute el comando php composer.phar install
(o composer install
) para instalar todas las dependencias del marco. Este proceso requiere que Git esté instalado en el servidor para completar exitosamente la instalación.
Si desea actualizar el marco Restler, puede ejecutar el comando php composer.phar update
.
Nota: – Si no tiene permiso para instalar Composer y Git en su servidor, puede instalarlos y ejecutarlos en su máquina de desarrollo. Los archivos y carpetas resultantes se pueden cargar y utilizar en el servidor.
Lo ideal es que la carpeta pública se asigne como raíz web. Es opcional, pero se recomienda evitar exponer archivos y carpetas innecesarios.
Pruebe los ejemplos en vivo en su localhost.
Puede iniciar el servidor integrado de PHP con el comando
composer serve
.
Actualice la base_url especificada en behat.yml
y luego intente el siguiente comando
vendor/bin/behat
alternativamente puedes ejecutar
composer test
Esto probará los ejemplos con los comportamientos esperados, por ejemplo
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
Todo listo, ¡Feliz DESCANSO! :)
Tenemos dos opciones para crear tu propio servidor api restler
La opción más conveniente es utilizar plantillas de aplicaciones como Restler Application, que tiene integraciones con muchos paquetes para ayudarnos también con la lógica empresarial. Si elige esta opción, seleccione una sucursal en ese repositorio y continúe con las instrucciones disponibles allí.
Cree un proyecto desde cero para tener control total sobre cada aspecto de su aplicación. Si elige esta opción, siga los pasos a continuación.
composer init
y siga las instrucciones para crear composer.json
restler/framework
y ^5
para la restricción de versión.composer require restler/framework:^5
Estamos usando
restler/framework
en lugar deluracast/restler
para reducir el espacio requerido para el paquete. Proviene de https://github.com/Luracast/Restler-Framework y contiene solo el contenido de la carpeta src aquí.
Incluso cuando esté construyendo desde cero, consultar las plantillas de la aplicación le ayudará a tomar decisiones sobre la estructura de carpetas y a encontrar otros paquetes útiles.
Cree sus clases API con todos los métodos públicos y protegidos necesarios
Cree la puerta de enlace (public/index.php) de la siguiente manera
<?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
Habilitar reescritura de URL
Asegúrese de que todas las solicitudes vayan a index.php habilitando la reescritura de URL para su sitio web
Por ejemplo:-
Si está en Apache, puede usar un archivo .htaccess como
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 >
Nota: Esto requiere que
AllowOverride
esté configurado enAll
en lugar deNone
en el archivohttpd.conf
, y puede requerir algunos ajustes en algunas configuraciones del servidor. Consulte la documentación de mod_rewrite para obtener más información.
Si está en Nginx, debe asegurarse de configurar el server_name
y pasar los scripts PHP a cgi rápido (PHP-FPM) escuchando en 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
}
Nota: – Esto requiere que PHP, PHP-FPM esté instalado y configurado correctamente. Consulte el ejemplo de PHP FastCGI para obtener más información.
Ajuste fino para satisfacer sus necesidades
<?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
Explore la API y pruébela abriendo explorer/index.html
desde la raíz web de su navegador.
¡Feliz exploración! :)
Nota: - El uso de eAccelerator puede hacer que Restler falle ya que elimina los comentarios. Más información se puede encontrar aquí
Restler admite anotaciones en forma de comentarios PHPDoc para el ajuste fino de API
Están documentados en detalle en Anotaciones.
Para proteger su API, autentique y permita usuarios válidos
<?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
De forma predeterminada, Restler se ejecuta en modo de depuración más optimizado para el desarrollador de API, mostrando mensajes de error detallados y embelleciendo el resultado de la API en un formato legible por humanos.
Al activar el modo de producción, obtendrá un aumento de rendimiento, ya que almacenará en caché las rutas (el análisis de comentarios se realiza solo una vez en lugar de cada llamada a la API), algunos archivos más y evitará proporcionar información de depuración.
<?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
//...
Nota: - Cuando el modo de producción se establece en
true
, siempre usa el caché y no detecta cambios ni nuevas rutas, si las hubiera. Su canal de integración continua o su enlace git deberían eliminar este archivo durante el proceso de implementación. Alternativamente, puede pasar el segundo parámetro al constructor restler para actualizar el caché cuando sea necesario aplicar cambios.
composer serve
.composer test
después de ejecutar el servidor con composer serve
en otra ventana.$restler->addAPIClass("Luracast/Restler/Explorer", 'swagger')
lo asigna a /swagger
.La clase de rutas se mejoró para proporcionar un método findAll para enumerar todas las rutas para una versión específica de la API, excluyendo las rutas especificadas y los métodos http.
Las propiedades mágicas utilizadas por las rutas cuando se encuentran, ignorando las propiedades reales. Esto es útil para clases de modelo dinámico como Eloquent.
Las rutas ahora permiten que @required
y @properties
sean matrices cuando el parámetro es un objeto. Esto nos ayuda a elegir las propiedades para cada método de API de manera diferente. Ejemplo {@properties property1,property2,property3}
{@required property1,property2}
crea una API para buscar solo 3 propiedades y 2 de ellas son obligatorias.
Optimizado la clase de navegación. Ahora hace uso de Routes::findAll()
, junto con la clase Explorer
La clase Restler tiene el método setBaseUrls para establecer URL base aceptables que se pueden configurar usando $_SERVER['HTTP_HOST']
. Lea este artículo para entender por qué. Esto es útil en los siguientes casos cuando
La clase Restler ahora permite anular el código de estado configurando $this->restler->responseCode
desde el método api.
Clase de formularios mejorada para enviar las propiedades incrustadas a la plantilla de Emmet. Por ejemplo
/**
* {@id form1}
*
* @param string $name
* @param int $age
*/
Genera el siguiente formulario
<form role="form" id="form1" method="POST" ...
porque la plantilla emmet tiene una identificación (ver más abajo)
form[role=form id=$id# name=$name# method=$method# action=$action# enctype=$enctype#]
@param
para configurar atributos html (por ejemplo, id, aceptar, etc.) fácilmente@class
. Ejemplo: - @class Validator {@holdException}
hace que el validador mantenga las excepciones en lugar de lanzarlas.@property
, @property-read
, @property-write
para admitir la documentación de las propiedades dinámicas.string[]
, DateTime[]
Scope::$resolver
.String
a Text
para compatibilidad con PHP 7 (String es una palabra clave reservada en php7)