Python-Code entwickeln, der die REST-APIs des Oracle API Platform Cloud Service Management Service verwendet

Mit den Oracle API Platform Cloud Service Management-APIs können Sie APIs erstellen und bereitstellen, die sich unter dem /apiplatform/management/v1/APIs-Endpunkt in Ihrer Oracle API Platform Cloud Service-Instanz befinden.

Beispiel: Die vollständige URL lautet: https://YOUR-API-PCS-INSTANCE-URL/apiplatform/management/v1/apis.

API-Datendatei erstellen

Sie können eine computerparstable Datendatei wie eine kommagetrennte Datei (CSV) erstellen, um die APIs zu definieren, die Sie im Oracle API Platform Cloud Service-Portal hochladen möchten.

Bevor Sie Ihre APIs in Oracle API Platform Cloud Service veröffentlichen, ist eine Datendatei nützlich, in der Sie alle Informationen wie APIs, Benennungskonventionen, Beschreibungen und Backend-URLs definieren und prüfen können.

CSV-Datendatei erstellen

Eine CSV-Datei ist eine einfache Möglichkeit, eine API-Datendatei zu erstellen, da Sie alle API-Felder als Spalten auflisten und die Werte in den Zeilen hinzufügen können.

So erstellen Sie eine CSV-Vorlagendatei:

  1. Öffnen Sie einen Texteditor oder eine Kalkulationstabellen-Software, um die Details der APIs hinzuzufügen, die Sie in das Oracle API Platform Cloud Service-API-Portal hochladen möchten.
  2. Geben Sie diese sechs Felder in der Datei als Spalten ein.
    • API_NAME: Geben Sie einen Namen für die API an, die Sie erstellen möchten. Jede API muss einen eindeutigen Namen haben.
    • API_VERSION: Geben Sie die Version der zu erstellenden API an.
    • API_DESCRIPTION: Geben Sie eine detaillierte Beschreibung der API an.
    • API_URI: Geben Sie die Endpunkt-URL für die API an. Dies wird an die Gateway-URL angehängt. Jede API muss über eine eindeutige URI verfügen.
    • SERVICE_URL: Backend-Service-URL, die aufgerufen wird, wenn die API eine Anforderung empfängt.
    • GATEWAY_ID: Geben Sie nur dann eine Gateway-ID an, wenn Sie die API für das Gateway bereitstellen möchten. Geben Sie andernfalls den Wert NONE an. Wenn der Wert NONE angegeben wird, wird die API nicht bereitgestellt.

    Lassen Sie keine leeren Werte in der CSV-Vorlagendatei, um Parsingfehler zu vermeiden oder die Datei zu beschädigen.

  3. Speichern Sie die Datei.

Erstellen einer Konfigurationsdatei

Sie können eine Konfigurationsdatei erstellen, in der Ihre Verbindungsdetails gespeichert werden, wie Ihren Benutzernamen, die REST-Endpunkt-URLs und eine JSON-Vorlage, die als Anforderungs-Payload für die REST-Webservices verwendet wird.

So erstellen Sie eine Konfigurationsdatei:

  1. Öffnen Sie den Editor, und deklarieren Sie die allgemeinen Variablen:
    api_file_name = "APIList.csv"
    
    ## Common variable declaration
    headers = {'Content-length' : '0', 'Content-type' : 'application/json'}
    user='YOUR-USER-NAME'
    apip_url = 'https://YOUR-API-PCS-INSTANCE-URL/apiplatform'
    
  2. Deklarieren Sie die API Portal-Variablen. Diese Variablen werden im Hauptclientskript verwendet, um die APIs zu erstellen.
    ## API portal variables
    
    createAPI_REST = apip_url+'/management/v1/apis'
    api_create_json_str = '''{
                "name":"%s",
                "vanityName": "%s",
                "version": "%s",
                "description":"%s",
                "implementation":
                {
                    "policies":[
                            { "id":"1", "type":"o:ApiRequest", "version":"1.0", "draft":false, "config": {"protocols": ["HTTP"],"url": "%s"}},
                            { "id":"2", "type":"o:ServiceRequest", "version":"1.0", "draft":false, "config": {"headerConfig": {"action": "PASS-THROUGH","headersToAddOrUpdate": [], "headersToDrop": []},"useProxy": false,"url": "%s"}},
                            { "id":"3", "type":"o:ServiceResponse", "version":"1.0", "config":{}},
                            { "id":"4", "type":"o:ApiResponse", "version":"1.0", "config":{}}
                    ],
                    "executions":{ "request":["1","2"], "response":["3","4"] }
                }
            }'''
  3. Deklarieren Sie die API-Gatewayvariablen. Diese Variablen werden im Hauptclientskript verwendet, um die APIs bereitzustellen.
    ## API Gateway variables
    
    deployAPI_REST = apip_url+'/management/v1/apis/%s/deployments'        
    gw_deploy_json_str = '''{"gatewayId":"%s","action":"DEPLOY","description":"","runtimeState":"ACTIVE"}'''
    
  4. Speichern Sie die Datei unter Config.py.

REST-Client mit Python erstellen

Sie können einen einfachen REST-Client mit der Python-Programmiersprache entwickeln, um APIs in Oracle API Platform Cloud Service hochzuladen.

Die folgenden Codeausschnitte dienen nur zur Veranschaulichung. Diese Snippets wurden unter allen Bedingungen nicht gründlich getestet. Alle hier enthaltenen Mustercodes werden Ihnen AS IS ohne Gewährleistungen jeglicher Art zur Verfügung gestellt. Die stillschweigenden Gewährleistungen von Nichtverletzung, Handelsfähigkeit und Eignung für einen bestimmten Zweck werden ausdrücklich ausgeschlossen.

  1. Öffnen Sie einen Editor, und importieren Sie diese Python-Librarys. Beispiel:
    import requests 
    from requests.auth import HTTPBasicAuth
    import csv
    import json
    import Config
    import getpass
    
  2. Erstellen Sie eine Funktion zum Lesen der CSV-Datei, und deklarieren Sie zwei Variablen, ein reader-Objekt zum Lesen der CSV-Datei, die durch das Komma getrennt ist, und ein passwd-Objekt zum Speichern der Benutzerzugangsdaten, wenn der Benutzer dazu aufgefordert wird.
    def csv_dict_reader(file_obj):    
        
        reader = csv.DictReader(file_obj, delimiter=',')
        passwd = getpass.getpass('Password for APIPCS user- ({}) :'.format(Config.user))
    
  3. Erstellen Sie in der Funktion eine for-Schleife, um jede Zeile in der CSV-Datei zu lesen, und führen Sie die REST-Aufrufe aus, um die APIs in Oracle API Platform Cloud Service zu erstellen.
        for line in reader:  
            print ('#############################################################################################################################')
            data = Config.api_create_json_str % (line["API_NAME"],line["API_NAME"],line["API_VERSION"], line["API_DESCRIPTION"],line["API_URI"],line["SERVICE_URL"])
            apipres=""        
            print ("data \n" + data + "\n")
            print ("Start Processing API: "+line["API_NAME"])
            try:
                apipres = requests.post(Config.createAPI_REST, data=data, auth=HTTPBasicAuth(Config.user,passwd),headers=Config.headers)               
            except Exception as e:
                print ("Exception while processing API \n"+str(e))
            
            print ("Response Status_code: "+ str(apipres.status_code)  )
            print ("Response Content: "+ str(apipres.content) )
            
            if apipres.status_code==201:          
                apiId=json.loads(apipres.content)["id"]
                print("API "+line["API_NAME"]+" created successfully with ID: "+apiId)
  4. Speichern Sie den Wert der Spalte GATEWAY_ID, um zu bestimmen, ob diese APIs bereitgestellt werden müssen, und stellen Sie die APIs bereit, die eine GATEWAY_ID enthalten.
                
                gwid=line["GATEWAY_ID"]
                if gwid!="NONE":
                   print ("\nStart Deploying API: "+line["API_NAME"]+" To gateway: " +gwid)
                   deployReq=Config.gw_deploy_json_str % (gwid)
                   deployURL = Config.deployAPI_REST % (apiId)               
                   
                   try:
                       gwres = requests.post(deployURL, data=deployReq, auth=HTTPBasicAuth(Config.user,passwd),headers=Config.headers)               
                   except Exception as e:
                       print ("Exception while deploying API \n"+str(e))
                       
                   print ("Gateway deployment Response Status_code: "+ str(gwres.status_code)  )
                   print ("Gateway deployment Response Content: "+ str(gwres.content) )
                   
                   if gwres.status_code==201:
                       print ("api deployed successfully")
                   else:
                       print ("api deployment failed")
            
            print ('############################################################################################################################## \n')
  5. Rufen Sie die Funktion auf, und übergeben Sie den Dateinamen aus der Datei Config.py als Parameter.
    if __name__ == "__main__":
        with open(Config.api_file_name) as f_obj:
            csv_dict_reader(f_obj)    
  6. Speichern Sie die Python-Datei unter LoadAPIs.py.