Je suppose que ma question est relativement simple et naïve, mais je suis nouveau dans l'utilisation des API REST, je serais donc reconnaissant pour toute aide ou indice.
J'essaie d'envoyer une requête avec urllib (ou un autre Python bibliothèque que je n'ai pas besoin d'installer). D'après leur guide , le format est:
https://vision.googleapis.com/v1/images:{ "requests":[ { "image":{ "content":"/9j/7QBEUGhvdG9eYxxxzj/Coa6Bax//Z" }, "features":[ { "type":"LABEL_DETECTION", "maxResults":1 } ] } ] }?key=my_api_key
3 Réponses :
Si vous devez envoyer Request Body
avec l'URL, vous pouvez utiliser CURL
. Pour tester les API REST, il existe un célèbre logiciel appelé POSTMAN . En utilisant cela, vous pouvez envoyer des requêtes et recevoir la réponse.
CURL,
{ "requests":[ { "image":{ "content":"/9j/7QBEUGhvdG9...image contents...eYxxxzj/Coa6Bax//Z" }, "features":[ { "type":"LABEL_DETECTION", "maxResults":1 } ] } ] }
En utilisant POSTMAN, vous pouvez lui donner ces valeurs et obtenir des résultats.
Donnez l'URL,
POST
Choisissez la MÉTHODE HTTP comme,
https://vision.googleapis.com/v1/images:annotate?key=YOUR_API_KEY
Et ajoutez le CORPS DE DEMANDE sous le brut
et choisissez JSON(application/json)
,
curl -v -H "Content-Type: application/json" -X POST \ -d '{"image":{"content":"/9j/7QBEUGhvdG9...image contents...eYxxxzj/Coa6Bax//Z"}, "features":[{"type":"LABEL_DETECTION","maxResults":1}]}' https://vision.googleapis.com/v1/images:annotate?key=YOUR_API_KEY
Puis-je faire cette demande avec une simple demande d'URL dans le navigateur ou je dois utiliser POSTMAN?
Utilisez le facteur. C'est un logiciel léger. Sinon, vous pouvez utiliser Firefox
. Lisez la deuxième réponse. stackoverflow.com/questions/4797534/...
Cela fonctionne pour moi:
import base64 import requests import json URL = "https://vision.googleapis.com/v1/images:annotate?key=YOUR_TOKEN" #image to base64, which is a long long text def encode_image(image_path): with open(image_path, "rb") as image_file: return base64.b64encode(image_file.read()) #make api call def image_request(image_path): data = { "requests":[ { "image":{ "content":encode_image(image_path) }, "features":[ { "type":"LABEL_DETECTION", #other options: LABEL_DETECTION FACE_DETECTION LOGO_DETECTION CROP_HINTS WEB_DETECTION "maxResults": 10 } ] } ] } r = requests.post(URL, json = data) return r.text #arg = path of image def main(argv): api_answer = json.loads(image_request(argv[1])) try: rows = api_answer['responses'][0]['labelAnnotations'] except: print(file_to_proccess) print(api_answer) data = [] for item in rows: data.append([item['mid'], item['description'], item['score'], item['topicality']]) # save somewhere the data list... if __name__ == "__main__": main(sys.argv)
cela a été testé et fonctionne parfaitement
import base64 import requests import json url = "https://vision.googleapis.com/v1/images:annotate" querystring = {"key":".........."} headers = { 'Content-Type': "application/json", } def encode_image(image_path): with open(image_path, "rb") as image_file: return base64.b64encode(image_file.read()) def image_request(image_path): payload = '{ \"requests\":[ { \"image\":{ \"content\":\"'+encode_image(image_path).decode('utf-8')+'" }, \"features\":[ { \"type\":\"TEXT_DETECTION\" } ] } ]}' response = requests.request("POST", url, data=payload, headers=headers, params=querystring) return response.text
De quoi avez-vous besoin? Avez-vous besoin d'un logiciel pour tester cette URL lors de l'envoi de la demande?
Je ne suis pas sûr de comprendre votre question. Je veux faire des appels API avec l'urllib de Python. Je souhaite utiliser l'API pour stocker et traiter les sorties.