web-dev-qa-db-fra.com

Pouvez-vous utiliser REST en PHP? Si oui, comment?

Je développe ma propre bibliothèque PHP et j'aimerais appeler les services Web RESTful à partir de mon API. Cela peut-il être fait en PHP et si oui, quels sont les bases pour le faire?

45
Zeck

Puisque REST est l'application des mêmes méthodes du protocole HTTP à la conception des architectures client-serveur et PHP est déjà si bon pour gérer les requêtes de protocole HTTP tels que GET et POST. PHP est spécialement adapté pour faciliter le développement de services REST.

Rappelez-vous REST est l'application des mêmes modèles http qui existent déjà.

Donc, si vous avez actuellement une application qui fait quelque chose comme:

  1. Formulaire HTML
  2. Processus PHP
  3. Sortie HTML dans un tableau

Donc, pour le faire REST vous devez:

  1. Acceptez les paramètres du Web. C'est facile car vous recevrez les paramètres soit comme get soit comme post ... donc c'est fondamentalement la même chose.
  2. Processus PHP
  3. Sortie en [~ # ~] json [~ # ~] ou [~ # ~] xml [~ # ~] . Et c'est tout!

    C'est assez facile.

Maintenant, la partie difficile est de rendre votre API (les fonctions et les URL) que vous allez générer conviviale pour les programmeurs.

Dans ce cas, je vous suggère de regarder le API flickr comme exemple est très facile à deviner pour les développeurs et a une bonne documentation.

Pour plus d'informations sur les API, consultez cette présentation: Comment concevoir une bonne API et pourquoi c'est important (Joshua Bloch)

Enfin une API RESTful devrait implémenter également les méthodes PUT et DELETE du protocole http quand c'est logique

Par exemple, si vous aviez une action de suppression dans votre API, ledit service devrait recevoir la méthode de suppression du protocole http. Au lieu de la chose la plus courante d'envoyer un paramètre d'action dans le cadre d'une demande de publication.

Edit: Remplacé "Php is rest by default" with "Since REST is the application of the same methods of the Protocole HTTP pour la conception des architectures client-serveur et PHP est déjà si bon pour gérer les requêtes de protocole HTTP telles que GET et POST. PHP est spécialement adapté pour faciliter le développement des services REST. "

Et également ajouté la note finale que vous devez implémenter les méthodes PUT ou DELETE appropriées lorsque cette action est logique pour votre API.

39
elviejo79

Vous voudrez peut-être consulter cet article et le suivi: http://www.gen-x-design.com/archives/create-a-rest-api-with-php/

Votre question est très ouverte, donc ce tutoriel peut être le meilleur point de départ.

Le lien ci-dessus ne fonctionne plus, alors consultez ce tutoriel:

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

18
James Black

J'ai développé une classe qui est la classe PHP native SoapServer 'REST équivalent.

Vous venez d'inclure le fichier RestServer.php, puis vous l'utilisez comme suit.

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

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

Ensuite, vous pouvez effectuer des appels comme celui-ci:

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

(Notez que peu importe l'ordre dans lequel les paramètres sont fournis dans la chaîne de requête. De plus, les noms de clé de paramètre ainsi que le nom de la méthode ne respectent pas la casse.)

5
Jake Sankey

Je ne peux pas faire de mal à revenir à la source d'origine du terme REST , et assurez-vous que vous comprenez ce que cela signifie.

4
Sixten Otto

Si vous pensez au côté client des choses, je vous suggère de vérifier PEST de Matt Sukowski.

Vous trouverez le référentiel sur GitHub: https://github.com/educoder/pest

Consultez également ce fil: PHP REST Clients

Mise à jour 2013/12/13:
Il s'agit vraiment d'un projet open source en direct, Matt Sukowsky l'a remis à de nouveaux gardiens cet été parce qu'il ne pensait pas pouvoir gagner suffisamment de temps, et il y a eu beaucoup, beaucoup de commits depuis lors. Donc, Pest est meilleur que jamais pour faire du repos en PHP :)

4