You are currently viewing RestProxy? RestProxy là cái quái gì vậy?

RestProxy? RestProxy là cái quái gì vậy?

Xin chào các bạn, lại là Gâu Đần đây. Chắc phải lâu lắm rồi chưa viết gì, nên hôm nay mình sẽ chia sẽ cho các bạn trong bài này một chức năng ẩn rất hay ho mà không phải ai cũng biết.

Ai chơi điện tử mà nhắc tới Easter Egg thì sẽ hiểu rằng đó những thông điệp bí ẩn giấu kín ở một chỗ nào đó mà người dùng phải cất công mò ra mới thấy. Bạn có tin hay không? Trong Marketing Cloud cũng có nhiều thông điệp/ chức năng ẩn và trong bài viết này mình sẽ giới thiệu một trong những Easter Egg đó!

What is RestProxy?

Như Gâu Đần giới thiệu ở trên RestProxy là một chức năng ẩn trong Marketing Cloud, và thông qua cái tên ít nhiều gì các bạn có thể đoán được tính chất của nó phải không? Hehe đó là:

  • Dùng trong ngôn ngữ SSJS 
  • Dùng cho REST API
  • Tính năng ẩn, không chính thức. Có nghĩa là Salesforce có thể dẹp tính năng này đi bất cứ lúc nào!

How to call RestProxy?

Sau đây là cách để gọi RestProxy ra để dùng:

<script runat="server">
Platform.Load("core", "1.1.1");
var prox = new Script.Util.RestProxy(client_id, client_sc);
var res = prox.Get("REST API URI"); // Get method
//var res = prox.Post("REST API URI", payload); // Post method
</script>

Các parameters:

client_id và client_sc chính là Client ID và Client Secret trong Installed Package.

URI là REST API URI

payload (optional) là nội dung để call API.

What is the difference between using RestProxy and calling REST API by SSJS?

Về bản chất và mục đích thì giống nhưng điểm đặc biệt của RestProxy đó là bạn không cần authenticate để lấy access token dùng để call REST API mà dùng Client ID và Client Secret gọi thẳng luôn. Điều này dẫn đến 2 việc:

  • Thao tác nhanh hơn, đỡ dài dòng việc get access token
  • Bảo mật kém hơn

Let’s make some codes!

Để xem RestProxy có làm được gì hay ho không thì ta thử dùng vài REST API từ Marketing Cloud để kiểm tra.

Chẳng hạn giờ ta sẽ nghịch vài REST API ở đây

Test with Get method

Với REST API: “Get Data Extension by Id” 

Request Example:

GET /data/v1/customobjects/{id}
Host: {subdomain}.rest.marketingcloudapis.com
Authorization: Bearer YOUR_ACCESS_TOKEN

Tức là phải cần authenticate bằng Access token đúng không? Nhưng nếu dùng RestProxy:

<script runat=server>
Platform.Load("core","1.1.1");
var objID = "Your DE object Id"; // DE object ID
var client_id = 'Your Client';
var client_sc = 'Your Secret';
var payload = {};
var prox = new Script.Util.RestProxy(client_id, client_sc);
try{
    var res = prox.Get("/data/v1/customobjects/" + objID);
    Write("Status code: "+ res.statusCode + "<br>");
    Write(Stringify(res.content));
} catch(ex){
    Write(Stringify(ex));
}
</script>

Siêu nhanh và siêu ngắn luôn!

Test with Post method

Với REST API:  “Create Data Extension field

Request Example:

POST /data/v1/customobjectsasync/{id}/fields
Host: {subdomain}.rest.marketingcloudapis.com
Authorization: Bearer YOUR_ACCESS_TOKEN
content-type: application/json

{
  "fields": [
    {
      "description": "The contact's primary phone number.",
      "isActive": true,
      "isHidden": false,
      "isInheritable": false,
      "isNullable": true,
      "isOverridable": false,
      "isPrimaryKey": false,
      "isReadOnly": false,
      "ordinal": 5,
      "isTemplateField": false,
      "length": 50,
      "maskType": "None",
      "mustOverride": false,
      "name": "PhoneNumber",
      "storageType": "Plain",
      "type": "Text"
    }
  ]
}

Nếu dùng RestProxy:

<script runat=server>
Platform.Load("core","1.1.1");
var objID = "Your DE object Id"; // DE object ID
var client_id = 'Your Client';
var client_sc = 'Your Secret';
var payload = {
  "fields": [
    {
      "description": "The contact's primary phone number.",
      "isActive": true,
      "isHidden": false,
      "isInheritable": false,
      "isNullable": true,
      "isOverridable": false,
      "isPrimaryKey": false,
      "isReadOnly": false,
      "ordinal": 6,
      "isTemplateField": false,
      "length": 50,
      "maskType": "None",
      "mustOverride": false,
      "name": "PhoneNumber",
      "storageType": "Plain",
      "type": "Text"
    }
  ]
};
var prox = new Script.Util.RestProxy(client_id, client_sc);
try{
    var res = prox.Post("/data/v1/customobjectsasync/" + objID + "/fields", payload);
    Write("Status code: "+ res.statusCode + "<br>");
    Write(Stringify(res.content));
} catch(ex){
    Write(Stringify(ex));
}
</script>

Wow, ảo ma chưa các bạn face with tears of joy 

Conclusion

Giờ thì các bạn biết đến RestProxy và cách dùng của nó trong Marketing Cloud rồi đấy. Hãy dùng nó để test code hay test API nhanh thôi nhé bạn! Hy vọng sẽ thấy hữu ích. Đón chờ những bài viết tiếp theo của Gâu Đần nhé.

Leave a Reply