Итак, я создал веб-перехватчик на панели управления Contentful, который срабатывает, когда запись публикуется или удаляется, и работает должным образом. Однако я хочу иметь возможность публиковать записи через API JavaScript управления контентом, не вызывая веб-перехватчик. Могу ли я предпринять какие-либо меры, чтобы это стало возможным?
Contentful: запретить запуск веб-перехватчика при использовании Content Management API.
Ответы (1)
К сожалению, нет никакой разницы, публикуется ли запись напрямую через API или через веб-приложение. Веб-приложение просто вызывает скрытый API.
Что может быть возможным, так это проверить опубликованную запись в веб-хуке и оценить, должен ли код выполняться или нет. Возможно, установив скрытое поле при публикации через API напрямую.
Например, если у вас есть поле publishedThroughAPI
, вы должны убедиться, что это поле не указано в API доставки и недоступно для редактирования:
Затем установите для этого поля значение true непосредственно перед публикацией через API JavaScript, проверьте это поле в своем веб-перехватчике и просто вернитесь из перехвата, если для поля установлено значение true.
Веб-перехватчик получит полезную нагрузку, содержащую вашу опубликованную запись. В основном та же полезная нагрузка, что и для обычного запроса, с той разницей, что она будет содержать все языковые стандарты. Ниже приведен небольшой пример:
{
"sys": {
//System meta data, created at, published at etc.
},
"fields": {
//All fields of the entry.
"title": {
"en-US": "English title",
"sv-SE": "Swedish title"
},
"publishedThroughAPI": {
"en-US": true,
"sv-SE": true
}
}
}
$payload = file_get_contents('php://input');
и прочитать строку json в переменной полезной нагрузки. Затем вы можете декодировать его с помощью $jsonObject = json_decode($string, true);
и продолжить чтение определенного ключа, например этого $jsonObject['fields']['publishedThroughAPI']['en-US']
- person Robban; 07.06.2017