SugarREST API returns a entry_list even when the record is not found


Calling the REST API get_entry for a record that does not exist, I would expect that the service returns a fault instead of a entry_list. See example shown below:

{
 entry_list: [
 {
 id: "bf700a80-6cdf-6587-d548-4d2d74f47d6",
 module_name: "Contacts",
 name_value_list: [
 {
 name: "warning",
 value: "Access to this object is denied since it has been deleted or does not exist"
 },
 {
 name: "deleted",
 value: "1"
 }
 ]
 }
 ],
 relationship_list: []}  

Source 1. JSON returned when th record is not found.

My proposal is that the service returns a fault when the event occurs: records not found. See the example of the desired fault follows.

{
 name: "Record not found or deleted",
 number: $error_number,
 description: "Access to this object is denied since it has been deleted or does not exist"
}

Source 2. Desired fault when record not found or deleted.

Managing abnormal situations through fault messages, simplifies error handling client side. See the output of a Java client Rest in case of error in the login process.

SugarCRM Login Fault

Figure 1. SugarCRM Login Fault

Figure 2. Get Entry Fault when Module does not exist

Figure 2. Get Entry Fault when Module does not exist

Following is an example of Java code that implements a client Rest managing all the fault the same way.

try {      
      SugarCRMInterface crmRestIf = new SugarCRMRestClient();
      // Try login
      System.out.println("Try login...");
      UserAuthLogin userAuth = new UserAuthLogin( new UserAuth("wil","18218139eec55d83cf82679934e5cd75","1.0"));
      EntryValue response = crmRestIf.login(userAuth, "RESTFulClient-1.0", null);
      ...

      // Get entry
      System.out.println("Get entry...");
      EntryResult contact = crmRestIf.getEntry(response.getId(), "Contact", "bf700a80-6cdf-6587-d548-4d2d74f47d6c", null, null);
      ...
} catch (FaultException fex) {
     System.out.println("Code: " + Integer.toString(fex.getCode()));
     System.out.println("Descrition: " + fex.getDescription());
     System.out.println("Detail: " + fex.getDetail());
     System.out.println("Detail Message: " + fex.getMessage());
} 

Source 3. Example of Java code that handles situations Fault.

The reference version is the 6.1 Community Edition, version 3 of the REST API.

About these ads

7 pensieri su “SugarREST API returns a entry_list even when the record is not found

Lascia un Commento

Fill in your details below or click an icon to log in:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Connessione a %s...