Comment fonctionnent les API Web? [fermé]

17

J'ai entendu parler de nombreuses API Web comme celle de Facebook, Twitter, etc., qui aident les tiers à accéder aux données et à les manipuler. Je voudrais savoir comment fonctionne une API Web. Quelles sont les bases d'une API Web?

Si je veux créer une API pour mon site, afin que les gens puissent y accéder ou le mettre à jour, de quoi ai-je besoin pour commencer?

Harish Kurup
la source
1
Non pas que ce soit d'une importance cruciale, mais avec quelle langue votre site est-il construit?
ocodo
Avez-vous déjà lu la documentation de l'API Web Facebook? developers.facebook.com/docs Si vous ne l'avez pas lu, pourquoi pas? Si vous l'avez lu, quelles questions spécifiques vous posez-vous?
S.Lott
ok bien sûr que je ferai @ S.Lott!
Harish Kurup

Réponses:

23

Au plus simple, vous créez un ensemble de demandes GET / POST que n'importe qui peut appeler et publier les informations sur les URL, les paramètres et les effets. OBTENEZ des demandes de tâches en lecture seule et des demandes POST pour tout ce qui changera les données sur le serveur.

Ajoutez un système d'authentification si nécessaire et vous avez vous-même une simple API Web.

Une API Web n'est qu'une interface pour permettre l'accès à votre système (comme un site) via des méthodes de requête HTTP standard . Les données elles-mêmes sont généralement enveloppées dans un format standard (tel que JSON ou XML ) pour en faciliter la gestion.


Voici un exemple d' API Web pour 'TextWise'

Dan McGrath
la source
D'accord. quel format de dat sera le meilleur pour utiliser JSON ou XML ??
Harish Kurup
1
JSON - XML ​​est très difficile à manipuler et n'offre aucun avantage sur JSON. Et en XML, vous avez une surcharge importante car vous devez avoir des balises de fermeture.
Slawek
1
@Harish. Encore une fois, c'est l'un de ceux qui «dépend entièrement de votre objectif / situation». Alors que je préfère le format JSON, si je le faisais pour l'un de nos systèmes au travail, j'utiliserais XML car il a des capacités d'analyse XML intégrées, mais pas JSON. Cela signifie que la maintenance du code est plus facile et que les autres développeurs seront familiarisés avec les commandes.
Dan McGrath
1
@Harish, c'est une bonne idée d'en privilégier un et de le publier en premier, mais fournir XML et JSON aidera vos utilisateurs.
ocodo
En pratique, XML et JSON gzip pour des tailles de fichier similaires. Je constate une tendance progressive à se tourner vers JSON (JSON est plus récent que XML), bien qu'il soit actuellement très courant de proposer les deux. JSON est idéal pour échanger des données tandis que XML est idéal pour échanger des documents.
Brian
5

Je développe actuellement une API pour la plate-forme de virtualisation de mon entreprise. Vous pouvez les aborder de différentes manières, mais mon préféré (et la voie la plus rapide pour faire fonctionner quelque chose que les gens peuvent comprendre) consiste à utiliser de simples requêtes HTTP GET et à renvoyer une réponse JSON.

Mon URL ressemble à ceci:

domain.com/method/call/subcall?key=key&data=something

Je décompose ensuite les variables HTTP GET et fais ce que l'appelant veut en faire. L'une des principales raisons pour lesquelles je me suis inscrit en tant qu'utilisateur bêta au développement de l'API Stack Exchange était que je savais que ce serait une expérience d'apprentissage formidable, et en effet, elle l'était .

Habituellement, je retourne deux tableaux codés JSON, l'un étant result, qui indique simplement si l'appel a réussi et donne un code d'erreur / une chaîne d'erreur dans le cas contraire. L'autre est généralement simplement appelé data, et le contenu de celui-ci est décrit dans la documentation de cet appel particulier. De plus, les API basées sur GET sont beaucoup plus faciles à tester et à déboguer.

Il existe de nombreux autres formats, comme SOAP / XMLRPC, je trouve juste que le choix de JSON me donne une simplicité et une liberté de choix incroyables.

Par exemple, si j'ai besoin d'envoyer beaucoup de champs et que je ne veux pas traiter avec une tonne de variables GET, je peux simplement le faire (exemple en PHP)

$to_send = base64_encode(json_encode($some_array));

Cela est facilement décodé de l'autre côté, ce qui me donne des dizaines de variables avec lesquelles travailler, tout en n'acceptant que 2 à 3 variables GET via l'API.

J'essaie simplement de garder mes méthodes et mes appels courts et succincts, et de les concevoir de manière à ce que chaque appel renvoie une réponse uniforme `` travaillé ou échoué '', suivie des données demandées.

Tim Post
la source
2

C'est en fait une question très large. Dans le sens le plus élémentaire, une API Web fonctionne lorsqu'un client (comme un navigateur Web) fait une requête HTTP quelconque à un serveur Web. Le serveur examine cette demande pour comprendre ce que veut l'utilisateur, puis renvoie les données dans un certain format (comme une page) que le client examine ensuite pour obtenir ce qu'il veut. Ce sont à peu près les seules choses que les API Web ont en commun; Je me rends compte que cela ne répond pas vraiment à votre question, mais je voulais expliquer pourquoi la question est si large.

Il existe toutes sortes de façons dont un client peut formater sa demande, ou qu'un serveur puisse formater sa réponse, et donc pour que cela ait du sens, le client et le serveur doivent se mettre d'accord sur certaines règles de base. De manière générale, il existe de nos jours deux styles très généraux qui s'utilisent pour ce genre de chose.

Appel de procédure à distance (RPC)

Dans une API de style RPC, il n'y a généralement qu'une seule URL pour l'ensemble de l'API. Vous l'appelez en POSTANT un document quelconque qui contient des informations sur ce que vous voulez faire, et le serveur renvoie le document qui contient ce que vous voulez. En termes informatiques généraux, le document de demande a généralement un nom de fonction et quelques arguments.

Certaines normes pour ce style d'API incluent XML-RPC et SOAP. Ces normes tentent de créer un format qui peut être utilisé pour décrire les appels de fonction que vous effectuez, ou même pour décrire l'ensemble de l'API.

Transfert d'état représentatif (REST)

Dans une API de style REST, vous n'avez pas tant d'URL pour l'API qu'un espace de noms : un serveur ou un dossier à l'intérieur d'un serveur, où résident de nombreux objets différents, et chaque URL de cet espace de noms fait partie de l'API. Au lieu de dire au serveur que vous souhaitez utiliser l'API, l'URL indique au serveur ce que vous voulez utiliser l'API sur . Vous utilisez ensuite la méthode HTTP, et éventuellement le corps de la demande, pour expliquer ce que vous voulez faire pour cet objet: GET (récupérer quelque chose qui est déjà là), POST (créer quelque chose de nouveau), PUT (remplacer quelque chose qui est déjà là), ou SUPPRIMER (se débarrasser de quelque chose qui est déjà là). Il existe quelques autres verbes que vous pouvez utiliser, mais ceux-ci sont de loin les plus courants.

Jusqu'à présent, je n'ai pas mentionné de formats standard pour REST. En théorie, vous pouvez utiliser n'importe quel format. HTTP prévoit déjà de dire ce que vous voulez faire et ce que vous voulez faire, de sorte que le format du corps de la demande pourrait être à peu près n'importe quoi: une représentation de l'objet que vous souhaitez créer ou remplacer. Mais dans la pratique, les auteurs REST ont tendance à s'entendre sur un format de toute façon, car il serait difficile de donner un sens à tous les formats possibles.

The Spooniest
la source