SOQL 쿼리하기
Salesforce REST API에서 SOQL 쿼리는 GET 방식을 사용하여 데이터를 조회할 수 있습니다.
쿼리문의 형식은 다음과 같습니다.
<instanceUrl>/services/data/vXX.x/query?q=<URL Encoded SOQL Query String>
vXX.x는 API의 버전을 의미하며, 이 설명에서는 v58.0을 적용하였습니다.
-
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; } -
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); } } -
App 클래스의
main메소드에 아래의 내용을 추가합니다.// Data function block begin querySample(connectionInfo); // Data function block end -
main메소드 위의Run을 클릭하여 프로그램을 실행해 봅니다.아래와 같은 형식의 데이터가 표시되면 정상적으로 동작을 하는 것입니다.
Result{ "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": "*****" } ] }