Desarrolle código Python que utilice las API de REST del servicio de gestión de Oracle API Platform Cloud Service

Use the Oracle API Platform Cloud Service Management APIs to create and deploy APIs that are located under the /apiplatform/management/v1/apis endpoint in your Oracle API Platform Cloud Service instance.

Por ejemplo, la URL completa sería: https://YOUR-API-PCS-INSTANCE-URL/apiplatform/management/v1/apis.

Creación de un archivo de datos de API

Puede crear un archivo de datos analizables por computadora, como un archivo separado por comas (CSV) para definir las API que desea cargar en el portal de Oracle API Platform Cloud Service.

Antes de publicar las API en Oracle API Platform Cloud Service, es útil tener un archivo de datos donde puede definir y verificar toda la información, como las API, las convenciones de nomenclatura, las descripciones y las URL de backend.

Crear un archivo de datos CSV

Un archivo CSV es una forma cómoda de crear un archivo de datos de API porque puede mostrar todos los campos de API como columnas y agregar los valores en las filas.

Para crear un archivo de plantilla CSV:

  1. Abra un editor de texto o un software de hoja de cálculo para agregar los detalles de las API que desea cargar en el portal de API de Oracle API Platform Cloud Service.
  2. En el archivo, introduzca estos seis campos como columnas.
    • API_NAME: proporcione un nombre para la API que desea crear. Cada API debe tener un nombre único.
    • API_VERSION: proporcione la versión de la API que desea crear.
    • API_DESCRIPTION: proporcione una descripción detallada de la API.
    • API_URI: proporcione la URL de punto final para la API. Se agrega a la URL de gateway. Cada API debe tener un URI único.
    • SERVICE_URL: URL de servicio de backend que se llama cuando la API recibe una solicitud.
    • GATEWAY_ID: proporcione un ID de gateway solo si desea desplegar la API en el gateway. De lo contrario, proporcione el valor NONE. Si se proporciona el valor NONE, la API no se desplegará.

    No deje ningún valor en blanco en el archivo de plantilla CSV para evitar errores de análisis o corromper el archivo.

  3. Guarde el archivo.

Creación de un archivo de configuración

Puede crear un archivo de configuración que almacene los detalles de conexión, como su nombre de usuario, las URL de puntos finales de REST y una plantilla de JSON que se utilice como carga útil de solicitud para los servicios web REST.

Para crear un archivo de configuración:

  1. Abra el editor y declare las variables comunes:
    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. Declare las variables del portal de API. Estas variables se utilizan en el script del cliente principal para crear las 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. Declare las variables de gateway de API. Estas variables se utilizan en el script del cliente principal para desplegar las 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. Guarde el archivo como Config.py.

Creación de un cliente REST con Python

Puede desarrollar un cliente REST simple mediante el lenguaje de programación Python para cargar API en Oracle API Platform Cloud Service.

Los siguientes fragmentos de código se proporcionan únicamente con fines ilustrativos. Estos fragmentos no se han probado a fondo en todas las condiciones. Todo el código de muestra aquí contenido se proporciona a usted AS IS sin ninguna garantía de ningún tipo. Las garantías implícitas de no infracción, comerciabilidad y idoneidad para un fin determinado se declinan expresamente.

  1. Abra un editor e importe estas bibliotecas de Python. Por ejemplo:
    import requests 
    from requests.auth import HTTPBasicAuth
    import csv
    import json
    import Config
    import getpass
    
  2. Cree una función para leer el archivo CSV y declarar dos variables, un objeto reader para leer el archivo CSV separado por el delímetro de coma y un objeto passwd para almacenar las credenciales de usuario cuando se le solicite al usuario.
    def csv_dict_reader(file_obj):    
        
        reader = csv.DictReader(file_obj, delimiter=',')
        passwd = getpass.getpass('Password for APIPCS user- ({}) :'.format(Config.user))
    
  3. Dentro de la función, cree un bucle for para leer cada línea del archivo CSV y realice llamadas de REST para crear las API en 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. Almacene el valor de la columna GATEWAY_ID para determinar si se deben desplegar esas API y despliegue las API que contienen 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. Llamar a la función y transferir el nombre de archivo del archivo Config.py como parámetro
    if __name__ == "__main__":
        with open(Config.api_file_name) as f_obj:
            csv_dict_reader(f_obj)    
  6. Guarde el archivo de Python como LoadAPIs.py.