如何通过 rest api 获取我的 visualforce 页面顶点代码?

How to get my visualforce page apex code through rest api?

我想通过休息获取我的 visualforce 页面顶点代码 API。我尝试了像 /services/data/v41.0/sobjects/{sobjectName}/describe/layouts 这样的元数据 API,我能够访问字段信息,但我想访问定义所有字段和触发器。

如有任何指导,我们将不胜感激。谢谢

您可以通过对 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

Visualforce 页面可以通过查询 ApexPage 标准对象来检索 Markup:

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

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

您必须进行 2 次 api 调用,即第一次获取 vf 页面代码,第二次获取控制器代码。

IF 在 workbench 上进行测试,使用终点 url 作为:

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

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

现在,下一次调用 Apex class 使用终点作为:

/services/data/v43.0/tooling/query?q=select+id,body,name+from+apexclass+where+name='<ControllerKey value>'

如果 apex class 被用作扩展,那么您必须从第一个响应中解析标记以获取 class 名称。

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