Comment construire une API RESTful?
La question est: est-ce
J'ai une application web qui s'exécute sur un serveur PHP. J'aimerais construire une api REST pour elle.
J'ai fait quelques recherches et j'ai compris que le RESTE de l'api utilise les méthodes HTTP (GET, POST,...) pour certains d'URI avec une clé d'authentification (pas nécessairement) et les informations sont présentées comme une réponse HTTP avec l'info comme XML ou JSON (je préfère JSON).
Ma question est:
- Comment puis-je, en tant que le développeur de l'application, de construire, de ceux d'URI? Dois-je écrire un bout de code PHP à l'URI?
- Comment puis-je construire les objets JSON pour revenir comme réponse?
- gen-x-design.com/archives/create-a-rest-api-with-php est une excellente ressource sur cette.
- J'ai écrit ce blog contenant des exemples de code et des instructions pour cela.
Vous devez vous connecter pour publier un commentaire.
Voici un très simple exemple en php simple.
Il y a 2 fichiers client.php & api.php. J'ai mis les deux fichiers sur la même url :
http://localhost:8888/
, de sorte que vous aurez à changer le lien vers l'url de votre propre. (le fichier peut être sur deux serveurs différents).C'est juste un exemple, il est très rapide et sale, et en plus il a été un long temps depuis que je l'ai fait en php. Mais c'est l'idée d'une api.
client.php
api.php
Je n'ai pas fait appel à la base de données pour cet exemple, mais normalement c'est ce que vous devriez faire. Vous devez également remplacer le "file_get_contents" fonction par "curl".
application/json
(stackoverflow.com/questions/4064444/...) et, dans le cas du moment cinétique (etc), unecallback argument
pourrait venir dans maniable (stackoverflow.com/questions/12066002/...).En 2013, vous devez utiliser quelque chose comme Silex ou Slim
Silex exemple:
Slim exemple:
Qui est à peu près la même créé un site web normal.
Normal pour un site de php est:
Avec une api, il suffit d'ajouter une nouvelle étape entre le 3 et le 4. Au bout de 3, de créer un tableau avec toutes les informations dont vous avez besoin. Coder ce tableau json et de sortie ou de retour de cette valeur.
Que l'ensemble de l'api.
Pour le côté client, vous pouvez appeler l'api par l'url. Si l'api de travailler uniquement avec les obtenir de l'appel, je pense que c'est possible de le faire simplement (À vérifier, j'ai l'habitude d'utiliser curl).
Mais il est plus courant d'utiliser la boucle de la bibliothèque pour effectuer des get et post-appel.
Vous pouvez me demander si vous avez besoin d'aide avec curl.
Une fois que le obtenir de l'information à partir de l'api, vous pouvez faire les 4 & 5 étapes.
Regarder la doc php pour json fonction et file_get_contents.
curl : http://fr.php.net/manual/fr/ref.curl.php
MODIFIER
Non, attendez, je ne comprends pas. "API php page" qu'entendez-vous par là ?
L'api est seulement à la création/récupération de votre projet. Vous n'envoyez JAMAIS directement le code html de résultat (si vous faites un site web) de jeter un api. Vous appelez l'api avec l'url, l'api retour d'informations, vous utiliser cette information pour créer le résultat final.
ex: vous voulez écrire une page html qui disent bonjour xxx. Mais pour obtenir le nom de l'utilisateur, vous devez obtenir les informations à partir de l'api.
Donc, disons que votre api ont une fonction qui ont user_id comme argument et retourne le nom de cet utilisateur (disons getUserNameById(user_id)), et que vous appelez cette fonction uniquement sur une url de votre/api/ulr/getUser/id.
De la côté client vous ne
De sorte que le client ne jamais accéder directement aux bases de données, que l'api de rôle.
Est plus clair ?
Il n'y a pas de norme pour la façon dont une API schéma d'URI doit être mis en place, mais il est courant d'avoir slash de valeurs séparées. Pour cela, vous pouvez utiliser...
...pour obtenir un tableau de barre oblique de valeurs séparées dans l'URI après le nom de fichier.
Exemple: en Supposant que vous avez un fichier API
api.php
dans votre application quelque part et que vous faites une demande pourapi.php/members/3
, puis$apiArgArray
sera un tableau contenant['members', '3']
. Vous pouvez ensuite utiliser ces valeurs pour interroger votre base de données ou faire un autre traitement.Vous pouvez prendre n'importe quel objet PHP et de le transformer en JSON avec json_encode. Vous aurez également besoin de définir l'en-tête approprié.
Tout cela est bon pour une API qui renvoie du JSON, mais la prochaine question à vous poser est:
(3) Comment puis-je faire mon API RESTful?
Pour cela, nous allons utiliser
$_SERVER['REQUEST_METHOD']
pour obtenir la méthode utilisée, puis faire des choses différentes sur cette base. De sorte que le résultat final est quelque chose comme...Sources: https://stackoverflow.com/a/897311/1766230 et http://en.wikipedia.org/wiki/Representational_state_transfer#Applied_to_web_services
Un autre cadre qui n'a pas été mentionné jusqu'à présent est Laravel. Il est idéal pour la construction d'applications PHP en général, mais grâce à la grande routeur, il est vraiment confortable et simple à construire riche Api. Il pourrait ne pas être que slim Mince ou Sliex mais il vous donne une structure solide.
Voir Aaron Kuzemchak - Simple API de Développement Avec Laravel sur YouTube et
Laravel 4: Un Début à une API RESTful sur NetTuts+
Je sais que cette question est accepté et a un peu d'âge, mais cela peut être utile pour certaines personnes qui se trouvent encore pertinentes. Bien que le résultat n'est pas un full API RESTful la API Générateur de mini lib pour PHP vous permet de transformer facilement MySQL bases de données accessibles sur le web JSON Api.
Que simon marc a dit, le processus est sensiblement le même que pour vous ou que je navigue sur un site internet. Si vous êtes à l'aise avec l'utilisation du Zend framework, il y a quelques facile à suivre des tutoriels pour rendre la vie assez facile de mettre les choses en place. La partie la plus difficile de la construction d'une api restful est la conception de l', et la rendre vraiment reposant, pense CRUD dans la base de données de termes.
Il se pourrait que vous voulez vraiment un xmlrpc interface, ou quelque chose de similaire. Que voulez-vous faire l'interface pour vous permettre de le faire?
--EDIT
C'est là que j'ai commencé avec des api restful et Zend Framework.
Zend Framework Exemple
En bref ne pas utiliser Zend reste du serveur, c'est obsolète.