Article qui peut être une ressource humaine qui comprend et maîtrise le mécanisme de l'API (avec du code Python)

introduction

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". ※※

Qu'est-ce que l'API (avantages de l'utilisation de l'API)

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.

Comprendre 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

1) Comment fonctionne le Web

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.

2) requête HTTP

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.

API de prévisions météorologiques (pour la méthode POST)

--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)

API de prévisions météorologiques (pour la méthode GET)

--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)

3) réponse HTTP

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 »

image.png

"** Réponse **: Ensoleillé puis nuageux"

image.png

Exemple de service API

Maintenant que vous avez un aperçu de l'API, utilisons le service d'API gratuit qui est réellement disponible.

Présentation du service de l'API à utiliser

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

image.png

Jetez un œil aux spécifications de l'API

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.

  1. Quel est le point de terminaison de l'API?
  2. Comment obtenir la clé API?
  3. POST OU OBTENIR?
  4. Quels sont les paramètres de requête?
  5. Quelles informations doivent être envoyées dans le corps de l'en-tête?

image.png

Organisons-les dans l'ordre. Cette fois, c'est un service gratuit, donc c'est très simple.

  1. ** Quel est le point de terminaison de l'API? ** ** http://weather.livedoor.com/forecast/webservice/json/v1
  1. ** 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).

  2. ** 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

  3. ** 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.

  4. ** 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.

Exemple de code Python

Maintenant que vous avez les informations dont vous avez besoin pour votre demande, faisons une demande à l'API en Python.

Envoyer une demande d'API

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)

image.png

Vérifier les données JSON de la réponse de l'API

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

image.png

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'])

image.png

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'])

image.png

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])

image.png

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'])

image.png

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.

à la fin

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 **

  1. Quel est le point de terminaison de l'API?
  2. Comment obtenir la clé API?
  3. POST OU OBTENIR?
  4. Quels sont les paramètres de requête?
  5. Quelles informations doivent être envoyées dans le corps de l'en-tête?

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].

Post-scriptum (des documents supplémentaires seront ajoutés à tout moment)

--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)

Recommended Posts

Article qui peut être une ressource humaine qui comprend et maîtrise le mécanisme de l'API (avec du code Python)
[Python] Un programme pour trouver le nombre de pommes et d'oranges qui peuvent être récoltées
Comprendre les probabilités et les statistiques qui peuvent être utilisées pour la gestion des progrès avec un programme python
[Python] Un programme qui trouve le nombre maximum de jouets pouvant être achetés avec votre argent
[Python] Code qui peut être écrit avec la mort cérébrale au début lors du scraping en tant que débutant
Jouez avec le mécanisme de mot de passe de GitHub Webhook et Python
Peut être utilisé avec AtCoder! Une collection de techniques pour dessiner du code court en Python!
[Python] Créez un graphique qui peut être déplacé avec Plotly
J'ai fait un shuffle qui peut être réinitialisé (inversé) avec Python
L'histoire de la création d'un module qui ignore le courrier avec python
[Python] Dessinez des données d'altitude sur une surface sphérique avec Plotly et dessinez un globe qui peut être tourné en rond et en rond
J'ai acheté et analysé la loterie jumbo de fin d'année avec Python qui peut être exécutée dans Colaboratory
Une histoire qui visualise le présent de Qiita avec Qiita API + Elasticsearch + Kibana
[Python] Un programme qui calcule le nombre de chaussettes jumelées
J'ai essayé d'obtenir le code d'authentification de l'API Qiita avec Python.
Hit une méthode d'une instance de classe avec l'API Web Python Bottle
Obtenez des visites d'articles et des likes avec l'API Qiita + Python
Obtenez une liste des paramètres de caméra qui peuvent être définis avec cv2.VideoCapture et faites-en un type de dictionnaire
[CleanArchitecture avec Python] Appliquez CleanArchitecture à une API simple étape par étape, et essayez de comprendre "quel type de changement est fort" dans la base de code.
[Python] N'est-ce pas le plus élevé et le plus élevé si vous pouvez saisir les caractéristiques d'une entreprise avec nlplot?
[Python] J'ai créé un code de scraping web qui acquiert automatiquement le titre de l'actualité et l'URL de Nihon Keizai Shimbun.
[Python] Création d'un outil qui peut lister, sélectionner et exécuter des fichiers python avec tkinter et à propos de la partie qui a été interceptée
[Python3] Code qui peut être utilisé lorsque vous souhaitez modifier l'extension d'une image à la fois
Classe pour PYTHON qui peut être utilisée sans connaître LDAP
Autour de l'authentification de PyDrive2, un package pour faire fonctionner Google Drive avec Python
[Python] Un programme qui calcule le nombre de mises à jour des enregistrements les plus élevés et les plus faibles
Obtenez le cours de l'action d'une entreprise japonaise avec Python et faites un graphique
Convertir le code de caractère du fichier avec Python3
Prise en compte des forces et faiblesses de Python
[Python] J'ai examiné une pratique qui peut être exécutée en parallèle avec le thread principal par traitement asynchrone (multiprocessing, asyncio)
Utilisez tkinter pour déplacer le code de sortie en tant que "A et prétendant être B" en python
Automatisez la suppression de l'arrière-plan pour les derniers portraits dans un répertoire avec Python et API
Construisez un serveur API pour vérifier le fonctionnement de l'implémentation frontale avec python3 et Flask
J'ai essayé d'automatiser la mise à jour de l'article du blog Livedoor avec Python et sélénium.
Visualisation des informations géographiques de R et Python qui peuvent être exprimées par Power BI
[Python] Introduction au scraping WEB | Résumé des méthodes pouvant être utilisées avec webdriver
Analyse morphologique et tfidf (avec code de test) pouvant être effectuée en 1 minute environ
Dans Python3.8 et versions ultérieures, le mod inverse peut être calculé avec la fonction intégrée pow.
Un mécanisme pour appeler des méthodes Ruby à partir de Python qui peut être fait en 200 lignes
Visualisez la gamme d'insertions internes et externes avec python
#Une fonction qui renvoie le code de caractère d'une chaîne de caractères
Exemples PHP et Python qui ont atteint l'API ChatWork
Un mémo que j'ai touché au magasin de données avec python
[Python] Obtenez des informations sur les utilisateurs et des articles sur l'API de Qiita
[Python] Un programme qui compare les positions des kangourous.
Recueillez des tweets sur "Corona" avec python et détectez automatiquement les mots qui sont devenus un sujet brûlant en raison de l'influence de "Corona"
Un serveur qui renvoie le nombre de personnes devant la caméra avec bottle.py et OpenCV
Une bibliothèque qui surveille la vie et la mort d'autres machines en envoyant un ping à partir de Python
Comment démarrer un serveur WEB simple qui peut exécuter des cgi de php et python
Obtenez le prix d'achat et de vente de la monnaie virtuelle avec l'API de l'échange Zaif et créez un graphique
Récapitulatif du format des formats qui peuvent être sérialisés avec gensim
Essayez d'utiliser l'API Twitter rapidement et facilement avec Python
Une note sur l'utilisation de l'API Facebook avec le SDK Python
Touchons l'API de Netatmo Weather Station avec Python. #Python #Netatmo
Définition des exigences - articles pouvant être des ressources humaines capables de concevoir des systèmes
Détecter les objets d'une couleur et d'une taille spécifiques avec Python
Créez le code qui renvoie "A et prétendant B" en python