Desenvolva o Código Python que Usa as APIs REST do Serviço de Gerenciamento do Oracle API Platform Cloud Service

Use as APIs de Gerenciamento do Oracle API Platform Cloud Service para criar e implantar APIs localizadas no ponto final /apiplatform/management/v1/APIs na instância do Oracle API Platform Cloud Service.

Por exemplo, o URL completo seria: https://YOUR-API-PCS-INSTANCE-URL/apiplatform/management/v1/apis.

Criar um Arquivo de Dados da API

Você pode criar um arquivo de dados analisável por computador, como um arquivo separado por vírgula (CSV) para definir as APIs que deseja fazer upload no portal Oracle API Platform Cloud Service.

Antes de publicar suas APIs no Oracle API Platform Cloud Service, é útil ter um arquivo de dados no qual você possa definir e verificar todas as informações, como APIs, convenções de nomenclatura, descrições e URLs de back-end.

Criar um Arquivo de Dados CSV

Um arquivo CSV é uma maneira conveniente de criar um arquivo de dados da API porque você pode listar todos os campos da API como colunas e adicionar os valores nas linhas.

Para criar um arquivo de modelo CSV:

  1. Abra um editor de texto ou um software de planilha para adicionar os detalhes das APIs que você deseja carregar para o portal de API do Oracle API Platform Cloud Service.
  2. No arquivo, insira estes seis campos como colunas.
    • API_NAME: Forneça um nome para a API que você deseja criar. Cada API deve ter um nome exclusivo.
    • API_VERSION: Forneça a versão da API que você deseja criar.
    • API_DESCRIPTION: Forneça uma descrição detalhada da API.
    • API_URI: Forneça o URL do ponto final para a API. Isso é anexado ao URL do Gateway. Cada API deve ter um URI exclusivo.
    • SERVICE_URL: URL do serviço de back-end que é chamado quando a API recebe uma solicitação.
    • GATEWAY_ID: Só forneça um ID de gateway se quiser implantar a API no gateway. Caso contrário, forneça o valor NONE. Se o valor NONE for fornecido, a API não será implantada.

    Não deixe valores em branco no arquivo de modelo CSV para evitar erros de análise ou corromper o arquivo.

  3. Salve o arquivo.

Criar um Arquivo de Configuração

Você pode criar um arquivo de configuração que armazena seus detalhes de conexão, como seu nome de usuário, os URLs de pontos finais REST e um modelo JSON que é usado como um payload de solicitação para os web services REST.

Para criar um arquivo de configuração:

  1. Abra o editor e declare as variáveis comuns:
    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 as variáveis do API Portal. Essas variáveis são usadas no script do cliente principal para criar as APIs.
    ## 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 as variáveis do API Gateway. Essas variáveis são usadas no script principal do cliente para implantar as APIs.
    ## API Gateway variables
    
    deployAPI_REST = apip_url+'/management/v1/apis/%s/deployments'        
    gw_deploy_json_str = '''{"gatewayId":"%s","action":"DEPLOY","description":"","runtimeState":"ACTIVE"}'''
    
  4. Salve seu arquivo como Config.py.

Criar um Cliente REST com Python

Você pode desenvolver um cliente REST simples usando a linguagem de programação Python para fazer upload de APIs no Oracle API Platform Cloud Service.

Os trechos de código a seguir são fornecidos apenas para fins ilustrativos. Estes snippets não foram completamente testados em todas as condições. Todo o código de amostra aqui contido são fornecidos a você AS IS sem quaisquer garantias de qualquer tipo. As garantias implícitas de não violação, comercialização e adequação para uma finalidade específica são expressamente rejeitadas.

  1. Abra um editor e importe essas bibliotecas Python. Por exemplo:
    import requests 
    from requests.auth import HTTPBasicAuth
    import csv
    import json
    import Config
    import getpass
    
  2. Crie uma função para ler o arquivo CSV e declarar duas variáveis, um objeto reader para ler o arquivo CSV que é separado pelo delimitador de vírgulas e um objeto passwd para armazenar as credenciais do usuário quando o usuário for solicitado.
    def csv_dict_reader(file_obj):    
        
        reader = csv.DictReader(file_obj, delimiter=',')
        passwd = getpass.getpass('Password for APIPCS user- ({}) :'.format(Config.user))
    
  3. Dentro da função, crie um loop for para ler cada linha no arquivo CSV e faça as chamadas REST para criar as APIs no 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. Armazene o valor da coluna GATEWAY_ID para determinar se essas APIs precisarão ser implantadas e implante as APIs que contêm um 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. Chame a função e informe o nome do arquivo do arquivo Config.py como parâmetro
    if __name__ == "__main__":
        with open(Config.api_file_name) as f_obj:
            csv_dict_reader(f_obj)    
  6. Salve o arquivo Python como LoadAPIs.py