Sviluppa codice Python che utilizza le API REST di Oracle API Platform Cloud Service Management Service

Utilizzare le API di gestione di Oracle API Platform Cloud Service per creare e distribuire le interfacce API che si trovano sotto l'endpoint /apiplatform/management/v1/APIs nell'istanza di Oracle API Platform Cloud Service.

Ad esempio, l'URL completo sarà: https://YOUR-API-PCS-INSTANCE-URL/apiplatform/management/v1/apis.

Creare un file di dati API

È possibile creare un file di dati analizzabile dal computer, ad esempio un file CSV (Comma Separable File), per definire le interfacce API che si desidera caricare nel portale di Oracle API Platform Cloud Service.

Prima di pubblicare le API in Oracle API Platform Cloud Service, è utile disporre di un file di dati in cui è possibile definire e verificare tutte le informazioni, ad esempio le API, le convenzioni di denominazione, le descrizioni e gli URL backend.

Creare un file di dati CSV

Un file CSV è un modo conveniente per creare un file di dati API poiché è possibile elencare tutti i campi API come colonne e aggiungere i valori nelle righe.

Per creare un file modello CSV:

  1. Aprire un editor di testo o un software di foglio di calcolo per aggiungere i dettagli delle API che si desidera caricare nel portale API Oracle API Platform Cloud Service.
  2. Nel file, immettere questi sei campi come colonne.
    • API_NAME: fornire un nome per l'API che si desidera creare. Ogni API deve avere un nome univoco.
    • API_VERSION: fornire la versione dell'API che si desidera creare.
    • API_DESCRIPTION: fornisce una descrizione dettagliata dell'API.
    • API_URI: fornire l'URL dell'endpoint per l'API. Questa operazione viene aggiunta all'URL del gateway. Ogni API deve avere un URI univoco.
    • SERVICE_URL: URL del servizio backend richiamato quando l'API riceve una richiesta.
    • GATEWAY_ID: fornire un ID gateway solo se si desidera distribuire l'API al gateway. In caso contrario, specificare il valore NONE. Se viene fornito il valore NONE, l'API non verrà distribuita.

    Non lasciare alcun valore vuoto nel file del modello CSV per evitare errori di analisi o danneggiare il file.

  3. Salvare il file.

Creazione di un file di configurazione

È possibile creare un file di configurazione in cui sono memorizzati i dettagli della connessione, ad esempio il nome utente, gli URL degli endpoint REST e un modello JSON utilizzato come payload della richiesta per i servizi Web REST.

Per creare un file di configurazione:

  1. Aprire l'editor e dichiarare le variabili comuni:
    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. Dichiarare le variabili del portale API. Queste variabili vengono utilizzate nello script del client principale per creare le interfacce API.
    ## 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. Dichiarare le variabili del gateway API. Queste variabili vengono utilizzate nello script client principale per distribuire le interfacce API.
    ## API Gateway variables
    
    deployAPI_REST = apip_url+'/management/v1/apis/%s/deployments'        
    gw_deploy_json_str = '''{"gatewayId":"%s","action":"DEPLOY","description":"","runtimeState":"ACTIVE"}'''
    
  4. Salvare il file come Config.py.

Creare un client REST con Python

È possibile sviluppare un client REST semplice utilizzando il linguaggio di programmazione Python per caricare le API in Oracle API Platform Cloud Service.

I seguenti snippet di codice sono forniti solo a scopo illustrativo. Questi snippet non sono stati accuratamente testati in tutte le condizioni. Tutti i codici di esempio contenuti nella presente documentazione vengono forniti AS IS senza alcuna garanzia di alcun tipo. Le garanzie implicite di non violazione, commerciabilità e idoneità per uno scopo particolare sono espressamente disclamate.

  1. Aprire un editor e importare queste librerie Python. Ad esempio:
    import requests 
    from requests.auth import HTTPBasicAuth
    import csv
    import json
    import Config
    import getpass
    
  2. Creare una funzione per leggere il file CSV e dichiarare due variabili, un oggetto reader per leggere il file CSV separato dal delimitatore di virgola e un oggetto passwd per memorizzare le credenziali utente quando viene richiesto all'utente.
    def csv_dict_reader(file_obj):    
        
        reader = csv.DictReader(file_obj, delimiter=',')
        passwd = getpass.getpass('Password for APIPCS user- ({}) :'.format(Config.user))
    
  3. All'interno della funzione, creare un loop for per leggere ogni riga del file CSV e effettuare le chiamate REST per creare le API in Oracle API Platform Cloud Service.
        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. Memorizzare il valore della colonna GATEWAY_ID per determinare se tali interfacce API dovranno essere distribuite e distribuire le interfacce API contenenti un GATEWAY_ID.
                
                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. Chiamare la funzione e passare il nome file dal file Config.py come parametro
    if __name__ == "__main__":
        with open(Config.api_file_name) as f_obj:
            csv_dict_reader(f_obj)    
  6. Salvare il file Python come LoadAPIs.py