分类目录

链接

2018年三月
« 2月   4月 »
 1234
567891011
12131415161718
19202122232425
262728293031  

近期文章

热门标签

博主推荐

现在位置:    首页 > Salesforce > 正文
salesforce REST services demo
Salesforce 暂无评论 阅读(60)
  1. @RestResource(urlMapping='/Cases/*')  
  2. global with sharing class CaseManager {  
  3.     @HttpGet  
  4.     global static Case getCaseById() {  
  5.         RestRequest req = RestContext.request;  
  6.         String caseId = req.requestURI.substring(req.requestURI.lastIndexOf('/')+1);  
  7.         Case result = [SELECT CaseNumber, Subject, Status, Origin, Priority  
  8.                        FROM Case  
  9.                        WHERE Id = :caseId];  
  10.         return result;  
  11.     }  
  12.     /*  
  13. HttpGet步骤:  
  14. 1、创建RestRequest类型的req对象(RestContext.request的返回值类型就是RestRequest)  
  15. 2、通过req对象的requestURI属性利用字符串检索技术拿到caseId  
  16. 3、创建Case对象result,并将通过caseId查到的记录赋值给该对象,注意“WHERE Id = :caseId”  
  17. 4、返回Case对象  
  18. */  
  19.     @HttpPost  
  20.     global static ID createCase(String subject, String status,  
  21.         String origin, String priority) {  
  22.         Case thisCase = new Case(  
  23.             Subject=subject,  
  24.             Status=status,  
  25.             Origin=origin,  
  26.             Priority=priority);  
  27.         insert thisCase;  
  28.         return thisCase.Id;  
  29.     }  
  30.     /* 
  31. HttpPost步骤: 
  32. 1、声明并创建一个Case类型对象thisCase,并为该对象的标准字段赋值 
  33. 2、将自定义对象插入到Case表中形成一条记录 
  34. 3、返回一个新纪录的类型为ID的变量Id用于查找新纪录 
  35. */  
  36.     @HttpDelete  
  37.     global static void deleteCase() {  
  38.         RestRequest req = RestContext.request;  
  39.         String caseId = req.requestURI.substring(req.requestURI.lastIndexOf('/')+1);  
  40.         Case thisCase = [SELECT Id FROM Case WHERE Id = :caseId];  
  41.         delete thisCase;  
  42.     }  
  43.     /* 
  44. 思路: 
  45. 要删除某一条记录首先要找到该记录,而方法可以是利用soql语言查找到某一记录的主码,这里是Id(使用rest服务请求获取到uri后从uri中取得的id) 
  46. HttpDelete步骤: 
  47. 1、创建ResrRequest对象req 
  48. 2、声明caseId,并将rest请求到的uri截取/后的值赋给该变量 
  49. 3、利用soql语句查到Id = :caseId的那条记录 
  50. 4、删除该记录 
  51. */  
  52.     @HttpPut  
  53.     global static ID upsertCase(String id, String subject, String status, String origin, String priority) {  
  54.         Case thisCase = new Case(  
  55.         Id = id,  
  56.             Subject = subject,  
  57.             Status = status,  
  58.             Origin = origin,  
  59.             Priority = priority  
  60.         );  
  61.         upsert thisCase;  
  62.         return thisCase.Id;  
  63.     }  
  64.     /* 
  65. HttpPut步骤: 
  66. 1、声明并创建一个Case类型对象thisCase,并为该对象定义标准字段赋值 
  67. 2、将自定义对象插入到Case表中形成一条记录或者更新Id为id的记录 
  68. 3、返回一个新纪录的类型为ID的变量Id用于查找新纪录 
  69. */  
  70.     @HttpPatch  
  71.     global static ID updateCaseFields() {  
  72.         RestRequest req = RestContext.request;  
  73.         String caseId = req.requestURI.substring(req.requestURI.lastIndexOf('/')+1);  
  74.         Case thisCase = [SELECT Id FROM Case WHERE Id = :caseId];  
  75.         Map<String, Object> params = (Map<String, Object>)JSON.deserializeUntyped(req.requestBody.toString());  
  76.         for(String fieldName : params.keySet()) {  
  77.             thisCase.put(fieldName, params.get(fieldName));  
  78.         }  
  79.         update thisCase;  
  80.         return thisCase.Id;  
  81.     }  
  82.     /* 
  83. HttpPatch步骤: 
  84. 1、创建RestRequest类型的req对象(RestContext.request的返回值类型就是RestRequest) 
  85. 2、通过req对象的requestURI属性利用字符串检索技术拿到caseId 
  86. 3、创建Case对象,并把按Id查到的Case表记录赋值给该对象 
  87. 4、将请求获得的requestBody转化成字符串后,反序列化为对象强制转化为Map<String, Object>后赋值给Map变量params 
  88. 5、遍历对象的key,并在通过id找到的Case对象thisCase中写入key-value 
  89. 6、更新记录 
  90. 7、返回记录的id 
  91. */  
  92. }  
  93. /* 
  94. 共性: 
  95. 1、每个对象系统自带一个Id属性,它是系统自动分配的; 
  96. 2、每一种Http方法均为global static 
  97. 3、@HttpPut与@HttpPost的区别(upsert,insert) 
  98. */  

本文版权归数据库之家所有,转载引用请完整注明以下信息:
本文作者:Bruce
本文地址:salesforce REST services demo | 数据库之家