J'étudie la programmation et qu'est-ce que l'API? Avez-vous déjà ressenti cela?
** "Que pouvez-vous faire avec l'API en premier lieu?" ** ** "Comment utilisez-vous cela?" **
Pour résoudre ces problèmes, il est bon de comprendre ** le mécanisme commun à toutes les API **. Je vais vous montrer le code Python spécifique, donc au moment où vous aurez fini de lire, vous devriez savoir comment utiliser l'API.
La structure du chapitre est la suivante.
--Qu'est-ce que l'API (avantages de l'utilisation de l'API) --Comprendre l'API --Exemple de service API
※※ Diverses informations sont également publiées sur SNS, donc si vous pensez que vous pouvez lire l'article Je vous serais reconnaissant de bien vouloir suivre Compte Twitter "Saku731". ※※
API signifie "** A ** pplication ** P ** rogramming ** I ** nterface". La traduction littérale est la suivante.
--Application --Utilisation de la programmation --Connecter (interface)
Pour aller un peu plus loin, le plus grand avantage dont l'API est nécessaire est "** Empruntez des fonctions utiles créées par d'autres personnes au service Web que vous avez créé **" Je pense que c'est tout.
En d'autres termes, vous n'avez pas à travailler dur pour développer à partir de zéro. Par exemple, lequel choisiriez-vous lors du développement d'un site EC?
De cette façon, l'option ** "Ne le faites pas vous-même" ** est le plus grand mérite de l'API.
Maintenant que vous connaissez les avantages de l'API, comprenons son fonctionnement. Il existe trois principaux types de connaissances requises.
―― 1) Comment fonctionne le Web ―― 2) requête HTTP ―― 3) Réponse HTTP
Internet, que j'utilise avec désinvolture, est rendu possible grâce au Web. Le Web est un "** mécanisme d'envoi de toutes sortes de données telles que des textes et des images sur Internet **".
Donc, bien sûr, vous devez comprendre le Web pour emprunter un service Web créé par une autre personne à l'aide de l'API. Pour comprendre le Web, maintenons les trois suivants.
C'est comme ça quand ils sont organisés en phrases.
Qu'est-ce que le Web? "Selon la promesse de communication de HTTP" "Vers et depuis l'emplacement (serveur) spécifié par l'URL" Un mécanisme "d'échange d'hypertexte (d'informations)".
Je dois lire de nombreux livres pour comprendre le Web en détail, Il suffit de comprendre qu'il s'agit de "** technologie d'échange d'informations avec le serveur spécifié par URL **".
L'API est un mécanisme qui facilite l'échange d'informations entre ** votre propre service Web ** et un service Web (serveur) ** créé par une autre personne utilisant cette technologie Web.
Et, pour utiliser l'API concrètement, il est nécessaire d'utiliser HTTP (convention de communication) adopté par le Web. Il existe deux types, «Envoyer des informations à l'autre partie ** Requête HTTP **» et «Recevoir des informations de l'autre partie ** Réponse HTTP **», alors comprenons-les plus tard.
Le premier est une requête HTTP que vous envoyez des données à l'autre partie. Il s'agit d'un processus pour envoyer une requête telle que "Veuillez me laisser utiliser la fonction" ** à un service Web créé par une autre personne via l'API.
L'utilisation de l'API est différente pour chaque service Web, mais elles ont une base commune. Les informations suivantes doivent être préparées en commun lors de l'utilisation d'une API.
Ces ** éléments majeurs sont communs à toutes les API , mais il existe des différences dans les détails. Vérifiez le contenu requis dans les " Spécifications API **" publiées par chaque service.
Si vous utilisez une API qui peut obtenir la météo dans chaque zone, les informations seront organisées de cette manière. Il n'est pas nécessaire d'en être conscient au début car il est écrit dans la spécification de l'API s'il faut utiliser POST ou GET.
En plus de POST et GET, il existe des méthodes appelées PUT et DELETE. Il est expliqué grossièrement comme suit.
--Informations pour se connecter à un service Web --API endpoint: https: /world_weather.com/api * Ceci est une URL fictive --Clé API: aaabbbccc
L'exemple de programme est le suivant.
#Importer la bibliothèque
import requests
#Informations de connexion à l'API
API_Endpoint = https:/world_weather.com/api
API_Key = aaabbbccc
#Informations à envoyer à l'API
headers = {'Content-Type': 'application/json', 'key':API_Key}
body = {date='today', area=Tokyo}
#Exécution de la connexion API
result = requests.post(API_Endpoint, data=json.dumps(body), headers=headers)
--Informations pour se connecter à un service Web
La méthode GET est généralement écrite comme suit, bien qu'elle dépende du service.
** ① Principe: inclure toutes les informations dans le point de terminaison (URL) **
#Importer la bibliothèque
import requests
#Informations de connexion à l'API ("?"Derrière"&”Pour relier les conditions)
API_Endpoint = https:/world_weather.com/api?Key=aaabbbccc&date='today'&area='Tokyo'
#Exécution de la connexion API
result = requests.get(API_Endpoint)
** Fonction du module requests
: informations séparées comme POST **
Cette méthode de description est similaire à POST. Au verso, les données sont envoyées sous la même forme que "(1) Principe", donc le résultat est le même.
#Importer la bibliothèque
import requests
#Informations de connexion à l'API
API_Endpoint = https:/world_weather.com/api
API_Key = aaabbbccc
#Informations à envoyer à l'API
headers = {'key':API_Key}
params = {date='today', area=Tokyo}
#Exécution de la connexion API
result = requests.get(API_Endpoint, headers=headers, params=params)
Lorsque vous envoyez une requête HTTP à un service Web via l'API, vous recevrez une "réponse" appelée ** Réponse HTTP **. En affichant cette "Réponse" sur votre propre service Web, vous pouvez vous éviter de développer à partir de zéro.
Par exemple, "** Demande **: Veuillez me dire la météo. Aujourd'hui, Japon, Tokyo »
"** Réponse **: Ensoleillé puis nuageux"
Maintenant que vous avez un aperçu de l'API, utilisons le service d'API gratuit qui est réellement disponible.
Essayez d'utiliser le service d'information météorologique Livedoor ** Weather Hacks **. Vous pouvez obtenir gratuitement les prévisions météorologiques pour 142 destinations dans tout le Japon jusqu'à «Aujourd'hui, demain, après-demain».
http://weather.livedoor.com/weather_hacks/webservice
Cliquez sur le lien ci-dessus pour voir les spécifications de l'API. Le nombre d'articles et de noms varie en fonction du service, mais l'ordre à vérifier est le suivant.
Organisons-les dans l'ordre. Cette fois, c'est un service gratuit, donc c'est très simple.
** Comment obtenir la clé API? ** ** Puisqu'il n'y a pas de description en particulier, il semble que ce soit un service qui peut être utilisé sans authentification (aucune clé API requise).
** POST OU OBTENIR? ** ** Ce service utilise la méthode ** GET **. Dans le cas où la méthode n'est pas spécifiée même si vous regardez les spécifications comme cette fois, elle est déterminée comme suit. --S'il existe une description à utiliser sous la forme de "point de terminaison (URL) + paramètre de requête": GET dans de nombreux cas --Autre que ça: surtout POST
** Quels sont les paramètres de requête? ** ** Il semble que vous deviez spécifier la zone («ville») où vous souhaitez obtenir les prévisions météorologiques. Utilisons "Kurume: 400040" écrit dans l'exemple.
** Quelles informations dois-je envoyer dans l'en-tête / le corps? ** ** Puisque la méthode GET est utilisée, il n'est pas nécessaire de préparer un corps d'en-tête.
Maintenant que vous avez les informations dont vous avez besoin pour votre demande, faisons une demande à l'API en Python.
Ce n'est pas grave si vous copiez et collez le code et l'exécutez tel quel.
#Bibliothèque requise pour la demande d'API
import requests
#URL + paramètres de requête
url = 'http://weather.livedoor.com/forecast/webservice/json/v1?city=400040'
#Envoyer une demande d'API
tenki_data = requests.get(url).json()
L'affichage du résultat retourné avec print ()
rend l'affichage très difficile à lire.
Il ne peut pas être utilisé tel quel, vous devez donc comprendre comment utiliser les ** données JSON **.
print(tenki_data)
Les données renvoyées par l'API sont souvent au format ** JSON **. Je vais omettre l'explication détaillée, mais il est courant de convertir du format JSON au type de dictionnaire dans la partie .json ()
incluse dans requests.get (url) .json ()
du code. C'est une cible.
L'utilisation du type de dictionnaire est décrite dans les spécifications de l'API.
http://weather.livedoor.com/weather_hacks/webservice
Tout d'abord, il dit que vous pouvez obtenir le "titre / titre" en spécifiant "title" dans le type de dictionnaire.
print('Titre:', tenki_data['title'])
Ensuite, si vous spécifiez «prévisions», vous pouvez obtenir les «prévisions météorologiques pour chaque date de prévision». Cependant, cela nécessite une procédure légèrement compliquée propre au format JSON, alors gardons le flux ensemble.
print(tenki_data['forecasts'])
Premièrement, lorsque «prévisions» est spécifié, le type de liste avec le premier et le dernier entre «[]» est affiché.
Vous pouvez vous attendre à spécifier ici comme "Aujourd'hui:[0]
, Demain:[1]
, Après-demain [2]
"selon les données que vous souhaitez acquérir.
#Spécifiez les données "Aujourd'hui"
print(tenki_data['forecasts'][0])
C'était plutôt rafraîchissant. Si vous arrivez à ce point, vous pouvez obtenir les données que vous aimez en fonction de votre objectif, alors affichons "Date de prévision: dataLabel
, Météo: telop
" cette fois.
#Date de prévision
print('Date de prévision:', tenki_data['forecasts'][0]['dateLabel'])
#Météo
print('Météo:', tenki_data['forecasts'][0]['telop'])
De cette manière, une série d'étapes de "vérification-demande-réponse de spécification d'API" se déroulera. Vous pouvez obtenir diverses autres informations, veuillez donc essayer différentes choses en vous référant aux spécifications de l'API.
Le fait que l'utilisation de l'API est différente selon le service est très gênant. Cependant, si vous pensez sur la base de ce qui suit introduit cette fois, vous pouvez maîtriser la plupart des API.
** Informations requises pour utiliser l'API **
** Procédure de confirmation **
C'est la fin de "Comment fonctionne l'API et comment l'utiliser". J'espère que ce sera une information utile pour votre développement.
~~ De plus, à la fin de la phrase, nous faisons "** Team Development Experience Project **" pour une durée limitée. ~~ ~~ Si vous êtes intéressé, veuillez consulter [Fiche de candidature] pour plus de détails. ~~ (Une addition) La date limite a été fermée car elle est pleine. La prochaine fois est prévue pour mars 2019, donc si vous souhaitez être informé, veuillez remplir le [Formulaire de réservation].
--Comment faire fonctionner l'objet Response renvoyé par la réponse - https://note.nkmk.me/python-requests-usage/ - http://python.zombie-hunting-club.com/entry/2017/11/06/211118#7-%E7%94%BB%E5%83%8F%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E5%8F%96%E5%BE%97%E4%BF%9D%E5%AD%98%E3%81%99%E3%82%8B
--Si la réponse est un fichier audio, enregistrez-le au format WAVE à l'aide du code suivant.
response = requests.post(API_Endpoint, data=json.dumps(body), headers=headers)
with open('response.wav', 'wb') as saveFile:
saveFile.write(response.content)