Développer un code Python qui utilise les API REST Oracle API Platform Cloud Service Management Service

Utilisez les API de gestion Oracle API Platform Cloud Service pour créer et déployer des API situées sous l'adresse /apiplatform/management/v1/APIs dans votre instance Oracle API Platform Cloud Service.

Par exemple, l'URL complète est : https://YOUR-API-PCS-INSTANCE-URL/apiplatform/management/v1/apis.

Création d'un fichier de données d'API

Vous pouvez créer un fichier de données analysable par ordinateur, tel qu'un fichier CSV (valeurs séparées par des virgules) pour définir les API à télécharger sur le portail Oracle API Platform Cloud Service.

Avant de publier vos API dans Oracle API Platform Cloud Service, il est utile de disposer d'un fichier de données dans lequel vous pouvez définir et vérifier toutes les informations telles que les API, les conventions de dénomination, les descriptions et les URL back-end.

Création d'un fichier de données CSV

Un fichier CSV est un moyen pratique de créer un fichier de données d'API car vous pouvez répertorier tous les champs d'API en tant que colonnes et ajouter les valeurs dans les lignes.

Pour créer un fichier de modèle CSV :

  1. Ouvrez un éditeur de texte ou un logiciel de feuille de calcul pour ajouter les détails des API à télécharger vers le portail d'API Oracle API Platform Cloud Service.
  2. Dans le fichier, entrez ces six champs en tant que colonnes.
    • API_NAME : indiquez le nom de l'API à créer. Chaque API doit avoir un nom unique.
    • API_VERSION : indiquez la version de l'API à créer.
    • API_DESCRIPTION : fournissez une description détaillée de l'API.
    • API_URI : indiquez l'URL d'adresse de l'API. Il est ajouté à la fin de l'URL de passerelle. Chaque API doit avoir un URI unique.
    • SERVICE_URL : URL de service back-end appelée lorsque l'API reçoit une demande.
    • GATEWAY_ID : indiquez un ID de passerelle uniquement si vous souhaitez déployer l'API vers la passerelle. Sinon, indiquez la valeur NONE. Si la valeur NONE est fournie, l'API ne sera pas déployée.

    Ne laissez aucune valeur vide dans le fichier de modèle CSV pour éviter les erreurs d'analyse ou d'endommagement du fichier.

  3. Enregistrez le fichier.

Créer un fichier de configuration

Vous pouvez créer un fichier de configuration qui stocke vos détails de connexion, tels que votre nom utilisateur, les URL d'adresses REST et un modèle JSON utilisé comme charge utile de demande pour les services Web REST.

Pour créer un fichier de configuration :

  1. Ouvrez votre éditeur puis déclarez les variables communes :
    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. Déclarer les variables du portail API. Ces variables sont utilisées dans le script client principal pour créer les 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. Déclarez les variables API Gateway. Ces variables sont utilisées dans le script client principal pour déployer les 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. Enregistrez le fichier sous le nom Config.py.

Création d'un client REST avec Python

Vous pouvez développer un client REST simple en utilisant le langage de programmation Python pour télécharger des API dans Oracle API Platform Cloud Service.

Les fragments de code suivants sont fournis à titre indicatif uniquement. Ces extraits n'ont pas été minutieusement testés dans toutes les conditions. Tous les exemples de code contenus ici vous sont fournis AS IS sans aucune garantie de quelque nature que ce soit. Les garanties implicites de non-infraction, de qualité marchande et d'adéquation à un usage particulier sont expressément divulguées.

  1. Ouvrez un éditeur et importez ces bibliothèques Python. Par exemple :
    import requests 
    from requests.auth import HTTPBasicAuth
    import csv
    import json
    import Config
    import getpass
    
  2. Créez une fonction pour lire le fichier CSV et déclarer deux variables, un objet reader pour lire le fichier CSV séparé par une virgule et un objet passwd pour stocker les informations d'identification utilisateur lorsque l'utilisateur est invité.
    def csv_dict_reader(file_obj):    
        
        reader = csv.DictReader(file_obj, delimiter=',')
        passwd = getpass.getpass('Password for APIPCS user- ({}) :'.format(Config.user))
    
  3. Dans la fonction, créez une boucle for pour lire chaque ligne du fichier CSV et effectuez les appels REST pour créer les API dans 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. Stockez la valeur de la colonne GATEWAY_ID pour déterminer si ces API doivent être déployées et déployez les API contenant un élément 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. Appelez la fonction et transmettez le nom du fichier à partir du fichier Config.py en tant que paramètre.
    if __name__ == "__main__":
        with open(Config.api_file_name) as f_obj:
            csv_dict_reader(f_obj)    
  6. Enregistrez le fichier Python sous le nom LoadAPIs.py.