Как получить код вершины моей страницы visualforce через rest api?

Я хочу получить код вершины моей страницы visualforce через rest API. Я попробовал API метаданных, например /services/data/v41.0/sobjects/{sobjectName}/describe/layouts, и я могу получить доступ к информации о полях, но я хочу получить доступ к верхнему коду страницы, где определены все поля и триггеры.

Любое руководство будет оценено. Спасибо


person Shubham    schedule 18.07.2018    source источник


Ответы (2)


Вы можете получить тело классов Apex (которые не являются частью управляемых пакетов) из запроса к стандартному объекту ApexClass:

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

Дополнительную информацию о доступных стандартных полях и объектах для запроса см. В Справочнике по объектам < / а>

person martin    schedule 18.07.2018
comment
Спасибо Мартину за то, что поделился полезным документом. - person Shubham; 19.07.2018

Вам нужно сделать 2 вызова API, то есть сначала для получения кода страницы vf, а во-вторых, чтобы получить код контроллера.

При тестировании на рабочей среде используйте URL-адрес конечной точки как:

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

Ответ даст вам имя контроллера в узле ControllerKey.

Теперь следующий вызов класса Apex, используя конечную точку как:

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

Если класс apex используется в качестве расширений, вам необходимо проанализировать разметку из первого ответа, чтобы получить имя класса.

Дайте мне знать, если вам понадобятся более подробные сведения.

person Sumit Kumar    schedule 19.07.2018
comment
Спасибо Sumit Это очень полезно. Вы сэкономили мне много времени. - person Shubham; 19.07.2018
comment
Привет, Сумит, мне нужна информация о пользовательских ярлыках, которые используются на верхней странице, например {! $ Label.MyCustomLabel}. Пожалуйста, поделитесь запросом для получения этого. - person Shubham; 24.07.2018
comment
Привет, Шубхам, пожалуйста, поднимите новый вопрос и поделитесь ссылкой, так как этот вопрос закрыт. - person Sumit Kumar; 24.07.2018