Maison  >  Article  >  développement back-end  >  Explication détaillée du développement de l'API et de l'interface côté serveur PHP

Explication détaillée du développement de l'API et de l'interface côté serveur PHP

php中世界最好的语言
php中世界最好的语言original
2018-03-24 13:45:464170parcourir

Cette fois, je vais vous apporter une explication détaillée du développement d'API et d'interfaces côté serveur PHP. Quelles sont les précautions pour le développement d'API et d'interfaces côté serveur PHP. Voici des cas pratiques, prenons un exemple : regarder.

Je crois que tout le monde a déjà utilisé l'interface API de requête PHP pour obtenir des données, telles que l'API Taobao, la plateforme publique WeChat, la requête météo, la requête express, etc. Certains doivent se référer au document d'interface pour construire un signe selon l'algorithme de signature, ou définir le jeton, puis envoyer une requête POST avec des paramètres via curl pour obtenir les données de retour, généralement au format json ou xml.

Mais maintenant, la situation est inversée. Nous devons développer l'interface API côté serveur PHP, c'est-à-dire que lorsque d'autres nous le demandent, nous vérifions la légitimité de la demande et renvoyons les données de la requête.

Cette situation est en fait utilisée dans le développement d'applications mobiles. Les applications d'applications mobiles doivent souvent demander l'interface PHP pour obtenir des données, mais cette demande n'a généralement pas besoin d'être vérifiée. Différentes URL sont demandées selon différentes fonctions, Passez généralement les paramètres dans la méthode get pour obtenir les données directement.

Cet article parle brièvement de la méthode côté serveur de vérification de la légitimité de la demande et de la méthode de réception des paramètres.

Demande d'obtention simplePar exemple : http://www.demo.com/api/get_cat?id=2, la demande de cette URL renverra certaines données, Peu importe qui le demande en utilisant n'importe quel langage de programmation, les données seront disponibles.

Alors cela n'est évidemment pas possible lorsque la légalité doit être vérifiée. Par conséquent, une clé secrète est nécessaire. À l’heure actuelle, POST est souvent utilisé pour demander l’URL.

Par exemple, il y a un signe de signature dans le paramètre passé, et la valeur est 98888. Bien sûr, il existe de nombreuses façons de générer le signe et cela ne peut pas être si simple, je l'écris simplement ici. Ensuite, le signe reçu par le serveur est 98888. Si nous sommes d'accord sur 98888 C'est légal. À ce stade, vous pouvez vérifier qu'il s'agit d'une demande légale en jugeant si le signe est 98888.

Mais c'est trop simple, il sera fissuré d'un seul coup, et mettre ce panneau n'aura aucun sens. Par conséquent, il doit y avoir une règle pour générer le signe. Lors de la demande, le paramètre sign est généré selon cette règle. Lorsque le serveur le reçoit, il génère également le signe selon cette règle. Si les signes générés sont cohérents, il l'indique. est une demande légale. Chaque demande sera accompagnée d'un signe de vérification.

Il existe également une sorte de vérification appelée token. Le token est vérifié lors de la première demande. Il n'a pas besoin d'être vérifié à nouveau dans un certain délai. Cela nécessite deux étapes. La première étape consiste à demander à l'interface d'obtenir le jeton et à obtenir le jeton. La deuxième étape consiste à demander la fonction de l'interface spécifique, et vous devez apporter le jeton pour transmettre les paramètres. Étant donné que le serveur stocke d'abord le jeton lors de sa première demande, puis le renvoie, les requêtes ultérieures peuvent vérifier si le jeton transmis existe.

De nombreux développeurs d'interfaces utilisent les deux méthodes pour garantir la confidentialité et la sécurité.

Un autre point est que le module CURL de PHP est souvent utilisé pour envoyer des requêtes POST. Par exemple, l'autre partie envoie une requête POST via curl, curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string), où $post_string est un. bon moyen de transmettre un tableau PHP ou est-il au format json ?

S'il s'agit d'un tableau PHP, j'obtiendrai les paramètres directement avec $_POST['xx']. S'il s'agit d'un format json, il me semble que je dois utiliser file_get_contents(' php: //input', 'r') récupère les données json transmises, puis analyse le json pour obtenir les paramètres.

Quand dois-je utiliser le deuxième ?

Cette question a été posée en ligne, voyons comment tout le monde a répondu :

JSON et tableaux pour PHP Parfois la différence n'est en réalité qu'une ligne de code. Si je l'écris, je peux simplement utiliser la première.

Je pense que si vous voulez que votre code soit plus simple, vous pouvez utiliser le second. Je me souviens que le SDK php de Weixin semble être similaire au second (bien sûr, il est au format XML)

Et si l'autre partie Si vous utilisez json directement sérialisé par Orienté objet, utiliser json rendra son code plus concis.

La première méthode, consiste à transmettre le formulaire du protocole POST, PHP convertira le tableau PHP au format de formulaire HTTP, qui est universel dans toutes les langues, mais Il ne s'agit pas d'un protocole API traditionnel, mais plutôt d'un formulaire de soumission simulé.

La plupart des protocoles API utiliseront JSON POST, La deuxième méthode, consiste à mettre les données JSON dans le corps HTTP. Également multilingue, mais plus convivial en tant qu'API.

La première méthode consiste à utiliser directement PHP curl. Si le contenu des données n'est pas bien traité et qu'un contenu tel que @/xxx/xxx est passé dans la valeur du tableau, curl transférera le fichier local sur le serveur, ainsi de suite. prudent.

x-www-form-urlencoded est une norme RFC, il n'y a rien d'incompatible, elle est non seulement multilingue, mais aussi à travers le temps et l'espace. JSON a été développé ces dernières années. Ce n’est pas un standard, c’est juste pour plus de commodité.

Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web chinois de php !

Lecture recommandée :

Explication détaillée de l'utilisation des fonctions de rappel PHP et des fonctions anonymes

Accès aux autorisations du service d'annuaire de phpstudy2018

ThinkPHP implémentation du tutoriel de processus de paiement WeChat (paiement jsapi) explication détaillée_php exemple

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn