SOQL 쿼리하기

Salesforce REST API에서 SOQL 쿼리는 GET 방식을 사용하여 데이터를 조회할 수 있습니다.

쿼리문의 형식은 다음과 같습니다.

<instanceUrl>/services/data/vXX.x/query?q=<URL Encoded SOQL Query String>

vXX.x는 API의 버전을 의미하며, 이 설명에서는 v58.0을 적용하였습니다.

  1. Database 클래스에 아래의 메소드를 추가합니다.

    HttpGet 메소드를 사용합니다.

    public static JsonObject query(ConnectionInfo connInfo, String query) {
        JsonObject jsonObject = null;
        try {
            String encodedQuery = URLEncoder.encode(query, StandardCharsets.UTF_8.toString());
            String url = connInfo.getInstanceUrl() + 
                "/services/data/v58.0/query?q=" + encodedQuery;
    
            HttpGet req = new HttpGet(url);
            req.setHeader("Content-type", "application/x-www-form-urlencoded");
            req.setHeader("Authorization", "Bearer " + connInfo.getAccessToken());
    
            String result = call(req);
    
            try {
                JsonElement jl = JsonParser.parseString(result);
                jsonObject = jl.getAsJsonObject();
            } catch (JsonParseException jsonException) {
                jsonException.printStackTrace();
            }
    
            req.releaseConnection();
        } catch (Exception e) {
            System.out.println(e);
        }
    
        return jsonObject;
    }
    
  2. App 클래스에 아래의 메소드를 추가합니다.

    public static void querySample(ConnectionInfo connectionInfo){
        try {
            String query = "SELECT Id, Name FROM Account LIMIT 10";
            JsonObject jsonObject = Database.query(connectionInfo, query);
    
    
            Gson gson = new GsonBuilder().setPrettyPrinting().create();
            String json = gson.toJson(jsonObject);
            System.out.println(json);
        } catch (Exception e) {
            System.out.println(e);
        }
    }
  3. App 클래스의 main 메소드에 아래의 내용을 추가합니다.

    // Data function block begin
    querySample(connectionInfo);
    
    // Data function block end
  4. main 메소드 위의 Run을 클릭하여 프로그램을 실행해 봅니다.

아래와 같은 형식의 데이터가 표시되면 정상적으로 동작을 하는 것입니다.

!!! tip "실행 결과"

   ``` json
   {
     "totalSize": 10,
     "done": true,
     "records": [
       {
         "attributes": {
           "type": "Account",
           "url": "/services/data/v58.0/sobjects/Account/001***************"
         },
         "Id": "001***************",
         "Name": "*****"
       },
       ...
       {
         "attributes": {
           "type": "Account",
           "url": "/services/data/v58.0/sobjects/Account/001***************"
         },
         "Id": "001***************",
         "Name": "*****"
       }
     ]
   }
   ```