Salesforce 如何通过RESTAPI获取我的visualforce页面apex代码?

Salesforce 如何通过RESTAPI获取我的visualforce页面apex代码?,salesforce,visualforce,salesforce-lightning,salesforce-communities,Salesforce,Visualforce,Salesforce Lightning,Salesforce Communities,我想通过RESTAPI获取我的visualforce页面apex代码。我尝试了元数据API,比如/services/data/v41.0/sobjects/{sobjectName}/description/layouts,我可以访问字段信息,但我想访问定义所有字段和触发器的页面的apex代码 任何指导都将不胜感激。谢谢您可以通过查询ApexClass标准对象获得Apex类的主体(不属于托管包的一部分): curl \ -H 'X-PrettyPrint: 1' \ -H 'Authorizat

我想通过RESTAPI获取我的visualforce页面apex代码。我尝试了元数据API,比如/services/data/v41.0/sobjects/{sobjectName}/description/layouts,我可以访问字段信息,但我想访问定义所有字段和触发器的页面的apex代码


任何指导都将不胜感激。谢谢

您可以通过查询
ApexClass
标准对象获得Apex类的主体(不属于托管包的一部分):

curl \
-H 'X-PrettyPrint: 1' \
-H 'Authorization: Bearer <session-id>' \
https://ap4.salesforce.com/services/data/v43.0/tooling/query?q=SELECT+Body+FROM+ApexClass+LIMIT+1

有关要查询的可用标准字段和对象的更多信息,请查看

您必须进行2次api调用,即首先获取vf页面代码,然后获取控制器代码

如果在工作台上进行测试,请将端点url用作:

/services/data/v43.0/tooling/query?q=select+id、ControllerKey、Markup+from+apexpage+where+name=''

响应将在
ControllerKey
节点中为您提供控制器名称

现在,下一步使用端点调用Apex类:

/services/data/v43.0/tooling/query?q=select+id、body、name+from+apexclass+where+name=''

如果apex类用作扩展,那么您必须从第一个响应解析标记以获得类名


如果您需要更多详细信息,请告诉我。

谢谢,这非常有帮助。你为我节省了很多时间。嗨,Sumit,我需要在apex页面中使用的自定义标签信息,如{!$label.MyCustomLabel}。请共享获取此信息的查询。嗨,Shubham,请提出新问题并共享链接,因为此问题已关闭。感谢martin共享有用的文档。
curl \
-H 'X-PrettyPrint: 1' \
-H 'Authorization: Bearer <session-id>' \
https://ap4.salesforce.com/services/data/v43.0/tooling/query?q=SELECT+Markup+FROM+ApexPage+LIMIT+1