2009-10-27 19 views
45

Estoy desarrollando mi propia biblioteca de PHP y me gustaría llamar a los servicios web RESTful de mi API. ¿Se puede hacer esto en PHP y, en caso afirmativo, cuáles son los elementos básicos para hacerlo?¿Se puede usar REST en PHP? ¿Si es así, cómo?

+6

+1: compensando el downvote, esta es una pregunta razonable (aunque vaga). –

+1

Creo que está preguntando sobre el manejo de los métodos de solicitud PUT y DELETE, por lo que no creo que sea una pregunta inválida. – bart

+0

Deje que la pregunta continúe usted sticklers; ¿Qué intentas probar aquí? Tiene más de 43,000 visitas y es el quinto resultado de Google para PHP + REST. Deja de matar lo que este sitio representa - CLUELESS QUESTIONS. –

Respuesta

38

Dado que REST es la aplicación de los mismos métodos del protocolo HTTP para el diseño de arquitecturas cliente-servidor y PHP ya es tan bueno para manejar solicitudes de protocolo HTTP como GET y POST. PHP es especialmente adecuado para facilitar el desarrollo de servicios REST.

Recuerde REST es la aplicación de los mismos patrones de HTTP que ya existen.

Así que si actualmente tiene una aplicación que hace algo como:

  1. formulario HTML
  2. Proceso PHP
  3. salida
  4. HTML en una mesa

Así que para hacerlo se Rest le necesita:

  1. Aceptar parámetro s de la web. Esto es fácil ya que recibirá los parámetros ya sea como obtener o publicar ... por lo que es básicamente el mismo.
  2. proceso PHP
  3. de salida, ya sea en JSON o XML. ¡Y eso es todo!

    Es bastante fácil.

Ahora la parte difícil es hacer que su API (las funciones y URL) que se generará a ser programador de usar.

En ese caso sugiero que mires el flickr API como ejemplo es muy fácil de adivinar para el desarrollador y tiene buena documentación.

Para obtener más información sobre las API vistazo a esta presentación: How to Design a Good API & Why it Matters (Joshua Bloch)

Finalmente una API REST debe aplicar también el PUT y DELETE métodos del protocolo http cuando tiene sentido

Por ejemplo, si tiene una acción de eliminación en su API, dicho servicio debería recibir el método de eliminación del protocolo http. En lugar de lo más común de enviar un parámetro de acción como parte de una solicitud posterior.

Editar: Sustituido "PHP es el descanso de forma predeterminada" con "Desde REST es la aplicación de los mismos métodos del protocolo HTTP para el diseño de arquitecturas cliente-servidor y PHP es ya tan buena para manejar las solicitudes de protocolo HTTP como GET y POST. PHP es especialmente adecuado para facilitar el desarrollo de servicios REST ".

Y también agregó la nota final de que debe implementar los métodos PUT o DELETE apropiados cuando esa acción tenga sentido para su API.

+2

-1: Lo sentimos, ningún idioma es RESTO por defecto. Por ejemplo, en REST, una solicitud POST es muy diferente de GET, y también debe ser compatible con DELETE y PUT. –

+0

@Jim Ferrans - ¿Por qué debe DELETE ser compatible? –

+0

@elviejo - Si mira las URL para stackoverflow verá una URL REST. Esto no es algo que PHP hace por defecto, en el análisis, ya que no hay signo de interrogación. –

17

Es posible que desee buscar en este artículo y el seguimiento: http://www.gen-x-design.com/archives/create-a-rest-api-with-php/

Su pregunta es muy abierta, por lo que este tutorial puede ser el mejor punto de partida.

El enlace de arriba ya no está trabajando a fin de comprobar a cabo este tutorial:

http://net.tutsplus.com/tutorials/other/a-beginners-introduction-to-http-and-rest/

+1

El enlace está roto. – kta

+0

@kaziTanvirAhsan - Gracias, ponga un mejor enlace –

4

Si está pensando en el lado del cliente, le sugiero que consulte la PEST de Matt Sukowski.

Encontrará el repositorio en GitHub: https://github.com/educoder/pest

También puedes ver en este tema: PHP REST Clients

Actualizar 13/12/2013:
Esto es en gran medida un proyecto de código abierto en vivo, Matt Sukowsky se lo entregó a los nuevos cuidadores este verano porque no sentía que pudiera dedicar suficiente tiempo, y ha habido muchos compromisos desde entonces. Entonces, Pest está mejor que nunca para hacer Rest en PHP :)

5

Desarrollé una clase que es el equivalente REST de la clase SoapServer nativa de PHP.

Simplemente incluya el archivo RestServer.php y luego úselo de la siguiente manera.

class Hello 
{ 
    public static function sayHello($name) 
    { 
    return "Hello, " . $name; 
    } 
} 

$rest = new RestServer(Hello); 
$rest->handle(); 

A continuación, puede hacer llamadas como esta:.

http://myserver.com/path/to/api?method=sayHello&name=World 

(Tenga en cuenta que no importa qué orden los parametros se proporcionan en la cadena de consulta Asimismo, los nombres clave param, así como el nombre del método no distingue entre mayúsculas y minúsculas)

+0

¿Por qué esta clase no distingue entre protocolos HTTP? – Isius

+0

No lo necesitaba en la aplicación para la que originalmente lo usaba. Siéntete libre de bifurcarlo y mejorarlo. –

Cuestiones relacionadas