Em muitas requisições REST, existem requisitos de autenticação usando TOKEN, ao invés de BASIC AUTH, OAUTH1, OAUTH2, etc. Abaixo segue um exemplo onde é feita a recuperação de token de autenticação que é na sequencia utilizado como informação de HEADER nas requisições subsequentes:
Exemplo
DEFINE l_rest_refer VARCHAR(10), l_json_refer VARCHAR(10), l_result_rest TEXT, l_status SMALLINT l_header VARCHAR(5000), l_body VARCHAR(5000), l_accessToken CHAR(1000), l_message CHAR(1000) ########## RECUPERAÇÃO DE TOKEN DE AUTENTICAÇÃO ########## # Cria o componente para requisições REST. LET l_rest_refer = _ADVPL_create_component(NULL,"LREST") # Define o endereço base das requisições. CALL _ADVPL_set_property(l_rest_refer,"HOST","https://<host>") #Montar o conteúdo do HEADER e BODY necessários para recuperação de TOKEN, #conforme estiver especificado na documentação da API REST para obtenção do TOKEN de autenticação LET l_header = '{"Content-Type: application/x-www-form-urlencoded"}' LET l_body = 'client_id=EC5TFE42-FB10-4CF2-A20B-B92525B71F6C&client_secret=secret&grant_type=client_credentials&scope=api1' LET l_status = _ADVPL_get_property(l_rest_refer,"POST","/<apiTokenPath>",l_header,l_body) IF l_status THEN LET l_result_rest = _ADVPL_get_property(l_rest_refer,"RESULT") call conout("POST RESULT REST: " || l_result_rest) IF l_result_rest <> " " THEN LET l_json_refer = _ADVPL_create_component(NULL,"LJSONOBJECT") LET l_status = _ADVPL_get_property(l_json_refer,"ACTIVATE",l_result_rest) LET l_accessToken = _ADVPL_get_property(l_json_refer,"VALUE","access_token") CALL _ADVPL_set_property(l_json_refer,"DEACTIVATE") CALL _ADVPL_destroy_component(l_json_refer) CALL CONOUT("TOKEN RESULT = "||l_accessToken CLIPPED) ELSE CALL CONOUT("TOKEN NOT FOUND") END IF ELSE CALL CONOUT("POST TOKEN ERROR: "||_ADVPL_get_property(l_rest_refer,"ERROR_MESSAGE")) END IF CALL _ADVPL_destroy_component(l_rest_refer) #Se o Token foi recuperado com sucesso IF l_accessToken <> " " THEN ########## REQUISIÇÃO UTILIZANDO TOKEN OBTIDO ########## # Cria o componente para requisições REST. LET l_rest_refer = _ADVPL_create_component(NULL,"LREST") # Define o endereço base das requisições. CALL _ADVPL_set_property(l_rest_refer,"HOST","https://<host>") #Monta conteúdo do HEADER com a chave TOKEN recuperada anteriormente LET l_header = '{ "Content-Type: application/json", "Authorization: Bearer ',l_accessToken CLIPPED,'" }' # Método GET. CALL _ADVPL_get_property(l_rest_refer,"GET","/<RequestApiPath>",l_header CLIPPED) LET l_result_rest = _ADVPL_get_property(l_rest_refer,"RESULT") LET l_status = _ADVPL_get_property(l_rest_refer,"STATUS") CALL conout("STATUS = "||l_status CLIPPED) CALL conout("API GET RESULT = "||l_result_rest CLIPPED) # Ao finalizar o uso, libera o componente da memória. CALL _ADVPL_destroy_component(l_rest_refer) END IF
Atente para a documentação descrita nos métodos de recuperação de TOKEN e também nos métodos de requisição REST que fazem uso do TOKEN, para avaliar as chaves enviadas em cada seção da requisição necessárias para o correto funcionamento.
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas