Konvertieren der cURL-API in ein Python-Skript (mithilfe des IBM Cloud-Objektspeichers)

Notieren Sie sich das Konvertierungsmuster beim Umschreiben in Python, nachdem Sie den Betrieb der REST-API mit cURL überprüft haben

  1. Verwenden Sie den IBM Cloud-Objektspeicher, um den Betrieb von cURL zu überprüfen.
  2. Schreiben Sie die bestätigte cURL in ein Python-Skript und überprüfen Sie sie im Objektspeicher.

Teil 1. Holen Sie sich ein Authentifizierungstoken

Für cURL

curl -X "POST" "https://iam.cloud.ibm.com/identity/token" \
     -H 'Accept: application/json' \
     -H 'Content-Type: application/x-www-form-urlencoded' \
     --data-urlencode "apikey={api-key}" \
     --data-urlencode "response_type=cloud_iam" \
     --data-urlencode "grant_type=urn:ibm:params:oauth:grant-type:apikey"

Für Python

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
import requests
import json

#Holen Sie sich einen Token
headers = {
    'Accept': 'application/json',
    'Content-Type': 'application/x-www-form-urlencoded',
}
data = {
    'apikey': os.environ['IBM_APIKEY'],
    'response_type': 'cloud_iam',
    'grant_type': 'urn:ibm:params:oauth:grant-type:apikey'
}
response = requests.post('https://iam.cloud.ibm.com/identity/token', headers=headers, data=data)
print(response)
output = response.json()
#print(json.dumps(output, indent=4))

ibm_access_token = output['access_token']

print(ibm_access_token)

Ergebnis der Python-Ausführung

STATUS :<Response [200]>

{
"access_token":"eyJraWQ******************************************2Erh-Te-w",
"expires_in":3600,
}
#Sehr lange Token sind 1 Stunde lang gültig (3600)=60 Sekunden x 60 Minuten)

Teil 2. Zeigen Sie eine Liste der Eimer an

Für cURL

curl "https://(endpoint)/" \
 -H "Authorization: bearer (token)" \
 -H "ibm-service-instance-id: (resource-instance-id)"

Für Python

#Schreiben Sie dasselbe Python-Skript, bis Sie das Token erhalten
# “#!/usr/bin/env python zu ibm_access_token = output['access_token']Bis"
#Ich werde es hier weglassen.

#Liste der Objekte
headers = {
    'Authorization': 'bearer ' + ibm_access_token
}
response = requests.get('https://s3.jp-tok.cloud-object-storage.appdomain.cloud/robocamera', headers=headers)
print("STATUS :" + str(response))
print("HEADERS:" + str(response.headers))
print("TEXT   :" + str(response.text))

Ergebnis der Python-Ausführung

STATUS :<Response [200]>
HEADERS:{'Content-Length': '1938', 'ibm-sse-kp-enabled':<Ausgelassen>'Content-Type': 'application/xml'}
TEXT   :<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Ausgelassen>

        <Name>robocamera</Name>
        <Contents>
            <Key>ciel_face_s.png</Key><LastModified>2019-11-30T02:50:53.410Z</LastModified>
            <Key>ghostpicture.jpg</Key><LastModified>2019-11-30T01:46:52.413Z</LastModified>
            <Key>index.html</Key><LastModified>2019-11-24T14:48:55.793Z</LastModified>

Teil 3. Laden Sie Dateien in den Bucket hoch

Für cURL

curl -X "PUT" "https://(endpoint)/(bucket-name)/(object-key)" \
 -H "Authorization: bearer (token)" \
 -H "Content-Type: (content-type)" \
 -d "(object-contents)"

Für Python

#Laden Sie die Kamerabilddatei in IBM Cloud Object Storage hoch.
#In diesem Beispiel[/robocamera]Ist der Eimername,[ghostpicture.jpg]Ist der Schlüsselname des Objekts.
    headers = {
        'Authorization': 'bearer ' + ibm_access_token,
        'Content-Type': 'image/jpeg',
    }
    f = open('capture_output.jpg', 'rb')
    img_data = f.read()
    f.close()
    response = requests.put(service_endpoint + '/robocamera/ghostpicture.jpg', headers=headers, data=img_data)
    #Wenn Sie beim Debuggen der Token-Erfassung überprüfen möchten
    print("UPLOAD STATUS:" + str(response))

Hoppla. Es gab eine Site, die cURL- und Python-Skripte konvertierte.

Das ist praktisch.

Convert curl syntax to Python https://curl.trillworks.com/

Recommended Posts

Konvertieren der cURL-API in ein Python-Skript (mithilfe des IBM Cloud-Objektspeichers)
[Python] Ändern Sie die Cache-Steuerung von Objekten, die in den Cloud-Speicher hochgeladen wurden
Laden Sie Dateien mit SDK (Python-Version) auf Aspera hoch, das mit IBM Cloud Object Storage (ICOS) geliefert wird.
Ich habe ein Skript erstellt, das das aktive Fenster mit win32gui von Python aufzeichnet
[IBM Cloud] Platzieren Sie die ISO-Datei im Objektspeicher
[Python] Sie können ein Objekt mithilfe des Pickle-Moduls in einer Datei speichern.
Eine Geschichte über einen Python-Anfänger, der versucht, Google-Suchergebnisse mithilfe der API abzurufen
Erstellen eines Python-Skripts, das die e-Stat-API unterstützt (Version 2)
Ich habe ein Python-Skript geschrieben, das alle meine Beiträge mit der Qiita API v2 exportiert
[OCI] Python-Skript zum Abrufen der IP-Adresse einer Recheninstanz in Cloud Shell
Ich habe versucht, die Erstellung einer praktischen Umgebung mithilfe der SoftLayer-API der IBM Cloud zu automatisieren
Verwenden von Cloud-Speicher aus Python3 (Einführung)
Ich habe eine Python-Bibliothek erstellt, um die API von LINE WORKS aufzurufen
So erhalten Sie mithilfe der Mastodon-API Follower und Follower von Python
Erstellen Sie ein Shell-Skript, um die Python-Datei mehrmals auszuführen
Ein Hinweis zum Verbinden von Spark mit OpenStack Swift-basiertem IBM Object Storage
Ein Skript, das 0, 1 an die erste Python-Primzahl zurückgibt
So senden Sie eine Anfrage mit Python an die DMM (FANZA) -API
Erstellen Sie ein Befehlszeilenprogramm, um mit Python Dollar in Yen umzurechnen
So laden Sie Dateien mit Python in den Cloud-Speicher hoch [Erstellen Sie mit Raspberry PI # 1 eine Festkommakamera]
Versuchen Sie es mit der Wunderlist-API in Python
Versuchen Sie, die Kraken-API mit Python zu verwenden
[Python] So konvertieren Sie eine zweidimensionale Liste in eine eindimensionale Liste
Tweet mit der Twitter-API in Python
Führen Sie den Python-Interpreter im Skript aus
Ich habe ein Skript in Python erstellt, um MDD-Dateien in das Scrapbox-Format zu konvertieren
Betreiben Sie den Cloud-Objektspeicher von Sakura von Python aus
So führen Sie Maya Python-Skripte aus
Ich habe versucht, E-Mails von Node.js und Python mithilfe des E-Mail-Zustelldienstes (SendGrid) von IBM Cloud zuzustellen!
Ich habe versucht, die BigQuery-Speicher-API zu verwenden
Verwenden Sie Cloud Composer, um regelmäßig auf die Youtube-API zuzugreifen und eine Pipeline zum Speichern der Ergebnisse in Bigquery zu erstellen
[19.11.2015] So registrieren Sie einen Dienst lokal mit dem Python SDK bei naoqi os
Lassen Sie Python die durchschnittliche Punktzahl einer Seite mithilfe der PageSpeed Insights-API messen
[Circuit x Python] So ermitteln Sie die Übertragungsfunktion eines Schaltkreises mit Lcapy
Der Schlüssel zum Bereitstellen von Flask-Apps mit Python Buildpack in Cloud Foundry (Diego)
Ich habe versucht, die Python-Bibliothek "pykakasi" zu verwenden, die Kanji in Romaji konvertieren kann.
[Python] Smasher hat versucht, den Video-Ladevorgang mithilfe eines Generators zu einer Funktion zu machen
[IBM Cloud] Ich habe versucht, über Cloud Funtions (Python) auf die Tabelle Db2 on Cloud zuzugreifen.
Python-Skript zum Abrufen einer Liste von Eingabebeispielen für den AtCoder-Wettbewerb
So senden Sie automatisch E-Mails mit Anhängen mithilfe der Google Mail-API in Python
Rufen Sie weiterhin Tweets mit bestimmten Schlüsselwörtern mithilfe der Streaming-API in Python ab
Erstellt einen Python-Wrapper für die Qiita-API
Vorgehensweise zur Verwendung der WEG-API von TeamGant (mit Python)
Python-Skript zum Konvertieren von Breiten- und Längengrad in Mesh-Code
Versuchen Sie es mit der BitFlyer Ligntning API in Python
Ich habe versucht, die Google Cloud Vision-API zu verwenden
So generieren Sie ein Python-Objekt aus JSON
Verwendung der Google Cloud Translation API
Speichern Sie das Objekt in einer Datei mit pickle
Konvertieren Sie STL mit Python VTK in ein Voxel-Netz
Schreiben Sie ein Skript, um einen MySQL-Dump in TSV zu konvertieren
Python Amateur versucht die Liste zusammenzufassen ②
Führen Sie Python-Skripte in Excel aus (mit xlwings).
[Python] Wirf eine Nachricht an den Slack-Kanal
Versuchen Sie, die DropBox Core-API mit Python zu verwenden
Ich habe versucht, das Update von "Werde ein Romanautor" mit "IFTTT" und "Werde ein Romanautor API" zu benachrichtigen.