Newer Version Available

This content describes an older version of this product. View Latest

Apex REST Basic Code Sample

This sample shows you how to implement a simple REST API in Apex that handles three different HTTP request methods. For more information about authenticating with cURL, see the Quick Start section of the REST API Developer Guide.
  1. Create an Apex class in your instance from Setup by entering New in the Quick Find box, then selecting New and add this code to your new class:
    1@RestResource(urlMapping='/Account/*')
    2global with sharing class MyRestResource {
    3
    4    @HttpDelete
    5    global static void doDelete() {
    6        RestRequest req = RestContext.request;
    7        RestResponse res = RestContext.response;
    8        String accountId = req.requestURI.substring(req.requestURI.lastIndexOf('/')+1);
    9        Account account = [SELECT Id FROM Account WHERE Id = :accountId];
    10        delete account;
    11    }
    12  
    13    @HttpGet
    14    global static Account doGet() {
    15        RestRequest req = RestContext.request;
    16        RestResponse res = RestContext.response;
    17        String accountId = req.requestURI.substring(req.requestURI.lastIndexOf('/')+1);
    18        Account result = [SELECT Id, Name, Phone, Website FROM Account WHERE Id = :accountId];
    19        return result;
    20    }
    21  
    22  @HttpPost
    23    global static String doPost(String name,
    24        String phone, String website) {
    25        Account account = new Account();
    26        account.Name = name;
    27        account.phone = phone;
    28        account.website = website;
    29        insert account;
    30        return account.Id;
    31    }
    32}
  2. To call the doGet method from a client, open a command-line window and execute the following cURL command to retrieve an account by ID:
    curl -H "Authorization: Bearer sessionId" "https://instance.salesforce.com/services/apexrest/Account/accountId"
    • Replace sessionId with the <sessionId> element that you noted in the login response.
    • Replace instance with your <serverUrl> element.
    • Replace accountId with the ID of an account which exists in your organization.

    After calling the doGet method, Salesforce returns a JSON response with data such as the following:

    1{
    2  "attributes" : 
    3    {
    4      "type" : "Account",
    5      "url" : "/services/data/v22.0/sobjects/Account/accountId"
    6    },
    7  "Id" : "accountId",
    8  "Name" : "Acme"
    9
    10}

    The cURL examples in this section don't use a namespaced Apex class so you won't see the namespace in the URL.

    Note

  3. Create a file called account.txt to contain the data for the account you will create in the next step.
    1{
    2  "name" : "Wingo Ducks",
    3  "phone" : "707-555-1234",
    4  "website" : "www.wingo.ca.us"
    5}
  4. Using a command-line window, execute the following cURL command to create a new account:

    curl -H "Authorization: Bearer sessionId" -H "Content-Type: application/json" -d @account.txt "https://instance.salesforce.com/services/apexrest/Account/"

    After calling the doPost method, Salesforce returns a response with data such as the following:

    1"accountId"

    The accountId is the ID of the account you just created with the POST request.

  5. Using a command-line window, execute the following cURL command to delete an account by specifying the ID:

    curl —X DELETE —H "Authorization: Bearer sessionId" "https://instance.salesforce.com/services/apexrest/Account/accountId"