top of page
Writer's pictureD. Dewangan

How to show API response in Tabular format using Aura

Updated: Oct 26, 2023



There may be a case where we have to represent API responses in tabular format. As we know, API responses are difficult for the end user to read. Hence, it requires framing the API responses in an easily readable format. During my project, I got a similar requirement. Today, I am going to share how this can be done.


We will do this with a sample API of Currency-Rate and the output would come up like this:


Steps to show API response in tabular format:


Step 1: Register your API in Salesforce.

  • Go to setup > Home.

  • Search Remote Site Settings.

  • Click new > then click on the New Remote Site button.



Step 2 : Create a Wrapper Class: currencyRateWrapper

globalclasscurrencyRateWrapper{
    @AuraEnabled
         global String Country;
    @AuraEnabled
         global Decimal Rate;
}

Step 3: Create a class: currencyRateCallout

globalclasscurrencyRateCallout {
   @AuraEnabled
   globalstatic List<currencyRateWrapper> getCalloutData() {
        Http HTTP = new Http();
        HttpRequest request = new HttpRequest();
        request.setEndpoint(‘callout:exchangeRates/path?format=json’);
        request.setMethod('GET');
        HttpResponse response = http.send(request);
        map<string,object> result = 
        (map<string,object>)JSON.deserializeUntyped(
            response.getBody()
         );
         map<string,object> countryRateMap = 
         (map<string,object>)result.get('rates');
         List<currencyRateWrapper> countryRate = new 
         List<currencyRateWrapper>();
         for(string currentVar : countryRateMap.keySet()) {
             currencyRateWrapper wrapper = new currencyRateWrapper();
             wrapper.country = currentVar;
             wrapper.rate =(Decimal)countryRateMap.get(currentVar);
             countryRate.add(wrapper);      }
               }
                return countryRate;
           }
 }                      

Step 4 : Create an aura component : currencyRate.cmp

To know, how to create an Aura Component, Click Here.


<aura:component implements ='force:appHostable' access='global' controller='currencyRateCallout'>
<aura:handler name = 'init' value = '{!this}' action = '{!c.doInit}'/>
<aura:attribute name = 'calloutResult' type = 'List'/> 
<div class="slds-text-heading_large" style = "padding-top: 42px; padding-bottom: 29px;">
       {!$Label.c.CURRENCYRATE_PAGE_HEADER}
   </div>
<table class="slds-table slds-table_cell-buffer slds-table_bordered" id ="currencyRateTable">
   <aura:if isTrue="{!not(empty(v.calloutResult))}">
     <thead>
      <th>
          {!$Label.c.COUNTRY_NAME}
       </th>
       <th>
          {!$Label.c.CURRENCY_RATE}
        </th>
     </thead>
     <tbody>
        <aura:iteration items="{!v.calloutResult}" var="currentVar">
           <tr>
             <td>
                 {!currentVar.Country}
             </td>
             <td>
                 {!currentVar.Rate}
               </td>
             </tr>
           </aura:iteration>
        </tbody>
     </aura:if>
  </table>
</aura:component>

Step 5: In controller: currencyRate.js write the following :

({
     doInit : function(component, event, helper) {
     var action = component.get('c.getCalloutData');
     action.setCallback(this, function(response){
       var res = response.getReturnValue();
       component.set('v.calloutResult', response.getReturnValue());
     });
     $A.enqueueAction(action);
    }
 })

Step 6: Create an Aura app : currencyCalloutData.app

To know, How to create an Aura Component, Click Here.

<aura:application extends="force:slds">
    <c:currencyRate/>
</aura:application>

Step 7 : Preview the app.


Note: custom labels used:

{!$Label.c.CURRENCYRATE_PAGE_HEADER}

CURRENCY RATE TABLE

{!$Label.c.COUNTRY_NAME}

Country

{!currentVar.Rate}

Rate

Happy!! To help you add to your knowledge. You can leave a comment to help me understand how the blog helped you. If you need further assistance, please leave a comment or contact us. You can click on "Reach us" on the website and share the issue with me.


Blog Credit:

D. Dewangan

S. Chaudhary

Salesforce Developer

Avenoir Technologies Pvt. Ltd.



Reach us: team@avenoir.ai


Comments


bottom of page