quarta-feira, 1 de fevereiro de 2023

WS - Como modificar atributos de payload [Rest Api] para facilitar o consumo de dados no portal.

Hoje vamos ver sobre "como modificar atributos de payload". Sabemos que o ideal seria poder consumir os dados do payload de acordo como ele foi estruturado, porém em alguns casos vamos nos deparar com a necessidade de tratar aquele dado para atender o objetivo que ele será utilizado ou até mesmo por questão de padronização.

Mas antes de começar veja as dicas de ferramentas que podem ser utilizada até que você estruture e debug seu script. 

Dicas de como testar antes de aplicar o script definitivo com o dado a ser tratado.

Dica 1: Use o Background Script.

Dica 2: Use o Xplore (Precisa baixar o .xml e subir/commit na sua PDI ) https://developer.servicenow.com/connect.do#!/share/contents/9650888_xplore_developer_toolkit?t=PRODUCT_DETAILS


Background Script - Crie seu script e debug.



Xplore - Crie seu script e debug.



Para tratar os dados do payload  utilizei o Xplore

Exemplo 1 - Foi modificado o nome do primeiro atributo de: 1. symbol para: ticker e dos demais foram removidos todos os números+(.) mantendo o mesmo nome. 





Exemplo 2 - Foi modificado todos atributos dentro do objeto, e como o payload vai repetir os atributos conforme o parâmetro enviado vs retorno do payload, foi utilizado o método .map para fazer a verificação e modificações necessárias.





Agora como fazer isso dento do Script include já que você provavelmente irá consumir dados de Web Server (Veja abaixo como ficou dentro do script include.)

Script Exemplo 1 

quoteDataCompany: function(symbol) {

    //chama função que retorna payload default da api consumida.
    var companies = this.getCompanyQuote(symbol);

    //var que recebe os dados tratados  
    var data = [];    

    //var que acessa os dados da cotação da compania dentro de "Global Quote"
    var myObj = companies["Global Quote"];
       
    //função para renomear valores com novos atributos
    data = {

            "ticker": myObj["01. symbol"],
            "open": myObj["02. name"],
            "high": myObj["03. high"],
            "low": myObj["04. low"],
            "price": myObj["05. price"],
            "volume": myObj["06. volume"],
            "latest trading day": myObj["07. latest trading day"],
            "previous close": myObj["08. previous close"],
            "change": myObj["09. change"],
            "change percent": myObj["10. change percent"],

};
       
    //Voce também pode acrescenta esse gs.log para validar dentro dos logs se
obteve o resultado esperado. Mas não esqueça de remover após testar ou deixar
comentado para não correr riscos de expor dados sensiveis.
    //gs.log("#CompanyData "+JSON.stringify(data));


        //retorna dados tratados.
        return data;
 
},

Script Exemplo 2

companyData: function(keyword) {

    //chama função que retorna payload default api consumida.
    var companies = this.getCompanySearch(keyword);

    //var que recebe os dados tratados  
    var data= [];      

    //var que acessa os dados da companias dentro de "bestMatches"
    var myObj = companies.bestMatches;

    //função para percorrer o objeto e renomear os novos atributos
    data = myObj.map(function(item) {
        return {
            "ticker": item["1. symbol"],
            "name": item["2. name"],
            "type": item["3. type"],
            "region": item["4. region"],
            "marketOpen": item["5. marketOpen"],
            "marketClose": item["6. marketClose"],
            "timezone": item["7. timezone"],
            "currency": item["8. currency"],
            "matchScore": item["9. matchScore"],
        };
});
         //Voce também pode acrescenta esse gs.log para validar dentro dos logs
se obteve o resultado esperado. Mas não esqueça de remover após testar ou
deixar comentado para não correr riscos de expor dados sensiveis.
    //gs.log("#CompanyData "+JSON.stringify(data));

        //retorna dados tratados.
        return data;
 
},

 

Nenhum comentário:

Postar um comentário

Adicionando campos ao formulário - Servicenow

 1 - Abra a lista da tabela criada recentemente All > nome da tabela e clique em "New". 2 - Clique no context menu > Configu...