Apex Rest based Sample

This blog will help you to setup salesforce rest based sample in a easy way and testing methods within same salesforce org.

Class Code:
@RestResource(urlMapping='/FindCase/V1/*')
global with sharing class ApexRestBased
{
@HttpPut //if it is request body type, then any one of these are fine PUT, PATCH, POST but same method cannot be used twice.
global static void findCaseDetails() //Method name not play any role
{
RestRequest req = RestContext.request;
ApexRestBased.Request_DTO req_dto = (ApexRestBased.Request_DTO)JSON.deserialize(req.requestBody.tostring(), ApexRestBased.Request_DTO.class);
ApexRestBased.Response_DTO res_dto = processRequest(req_dto);
prepareResponse(res_dto);
}
private class Request_DTO{
private string caseNumber = '';
}
private class Response_DTO{
private string result = '';
private string isSuccess = '';
private string errorNumber = '';
private string errorDesc = '';
}
private static ApexRestBased.Response_DTO processRequest(ApexRestBased.Request_DTO req_dto){
ApexRestBased.Response_DTO res_dto = new ApexRestBased.Response_DTO();
list<Case> resCases = [SELECT Id, CaseNumber, Status, Type, Reason, Origin, Subject, Priority, Description, IsClosed FROM Case WHERE CaseNumber =: req_dto.caseNumber];
if(resCases != null && !resCases.isEmpty()){
res_dto.result = system.JSON.serialize(resCases);
res_dto.isSuccess = 'true';
}
else{
res_dto.isSuccess = 'false';
res_dto.errorNumber = '0000001';
res_dto.errorDesc = 'Case Not found!';
}
return res_dto;
}
private static void prepareResponse(ApexRestBased.Response_DTO res_dto){
RestResponse res = RestContext.response;
res.statusCode = 200;
res.addHeader('Content-Type', 'application/json');
res.responseBody = Blob.valueOf(System.JSON.serialize(res_dto));
}
}
view raw ApexRest.cls hosted with ❤ by GitHub

Testing can be done by running below snippet in your Develper console / Anonymous code bloc ( ctrl + e)
String salesforceHost = System.Url.getSalesforceBaseURL().toExternalForm();
String url = salesforceHost + '/services/apexrest/pradeep_dani/FindCase/V1';
HttpRequest req = new HttpRequest();
req.setMethod('PUT');
req.setEndpoint(url);
req.setHeader('Content-type', 'application/json');
req.setHeader('Authorization', 'Bearer ' + UserInfo.getSessionId());
req.setBody('{"caseNumber":"00001085"}');
Http http = new Http();
HTTPResponse res = http.send(req);
System.debug(res.getBody());

Comments