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?
Respuesta
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:
- formulario HTML
- Proceso PHP salida
- HTML en una mesa
Así que para hacerlo se Rest le necesita:
- 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.
- proceso PHP
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.
-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. –
@Jim Ferrans - ¿Por qué debe DELETE ser compatible? –
@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. –
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/
El enlace está roto. – kta
@kaziTanvirAhsan - Gracias, ponga un mejor enlace –
no puede hacer daño a volver a the original source of the term REST, y asegúrese de que entiende lo que eso significa.
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 :)
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)
¿Por qué esta clase no distingue entre protocolos HTTP? – Isius
No lo necesitaba en la aplicación para la que originalmente lo usaba. Siéntete libre de bifurcarlo y mejorarlo. –
- 1. ¿Se puede usar canvas.getContext ('3d')? Si es así, ¿cómo?
- 2. PHP: ¿Se puede usar una matriz como la parte argumentos de la función sprintf? ¿si es así, cómo?
- 3. ¿Puede establecer atributos en Colecciones Backbone.js? ¿Si es así, cómo?
- 4. ¿Puede el FFI lidiar con matrices? ¿Si es así, cómo?
- 5. ¿Es así como usar un patrón MVC en PHP OO
- 6. ¿Cómo verificar si __PRETTY_FUNCTION__ se puede usar?
- 7. ¿Cómo se puede usar php en una función de Javascript
- 8. ¿Es posible filtrar datos en una cuadrícula como se puede en una cuadrícula de datos? ¿Si es así, cómo?
- 9. En Python, ¿puede tener variables dentro de comillas triples? ¿Si es así, cómo?
- 10. ¿Debo limpiar el servidor SMTP? Si es así, ¿cómo hacerlo?
- 11. ¿Puedo usar git-svn y parecer que estaba usando SVN, si es así cómo?
- 12. OPCIONES en PHP REST API
- 13. ¿Cómo se puede distinguir si se trata de un servicio web SOAP o REST?
- 14. REST vs. RPC en PHP
- 15. ¿Cómo se crea una API REST en PHP?
- 16. ¿Se puede usar Automapper para vincular instancias de clase a Winforms y, de ser así, cómo?
- 17. ¿Puedo agregar una alerta de JavaScript dentro de una función de PHP? Si es así, ¿cómo?
- 18. ¿Es esto un cierre? Si es así, ¿por qué?
- 19. ¿Puedo teñir (negro) un UIKeyboard? ¿Si es así, cómo?
- 20. ¿Es posible dividir una cadena en varias líneas en un archivo XML? ¿Si es así, cómo?
- 21. ¿Puede PHP usar sockets asincrónicamente?
- 22. ¿Se puede diseñar una SOA con REST?
- 23. ¿Puede una suma de verificación TCP producir un falso positivo? Si es así, ¿cómo se soluciona esto?
- 24. ¿Se puede crear una etiqueta de plantilla personalizada que devuelva un conjunto de preguntas? Si es así, ¿cómo? - Django
- 25. ¿Cómo se puede usar Python en Vim?
- 26. ¿Se prefiere XAMPP (para Windows) a WampServer? Si es así, ¿por qué?
- 27. ¿Las URL de la API REST tienen que verse así?
- 28. ¿qué se puede usar en su lugar si captcha es inseguro?
- 29. ¿Puede la clase ser abstracta incluso si no tiene ningún método abstracto? Si es así, ¿cuál es el uso?
- 30. Autenticación REST en PHP (CodeIgniter)
+1: compensando el downvote, esta es una pregunta razonable (aunque vaga). –
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
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. –