API의 호출과 웹 앱의 호출 간에는 차이점이 없습니다. 웹 응용 프로그램은 후드 아래에서이 호출을 정확하게 수행합니다.
더 게시판을 게시하지 않은 경우 웹 훅에서 수신하는 것은 필드가없는 삭제 개체입니다. 즉, 이전 답변에 표시된 트릭은 여기에 적용되지 않습니다.
이 문제를 해결할 수있는 유일한 방법은 일부 데이터 저장소 (Contentful 일 수 있음)를 다시 호출하여 항목 ID와 아마도 일부 타임 스탬프를 거기에 넣는 것입니다. 그런 다음 웹 훅은 게시되지 않은 이벤트를 수신하면이 데이터 저장소에 쿼리를 보내 처리를 계속할지 또는 게시되지 않은 것으로 보이는지를 웹 앱을 통해 확인할 수 있습니다. 이 같은
기본적으로 뭔가 : 일부 의사 코드와 함께으로 webhook에서 다음
client.getSpace('<space_id>')
.then((space) => space.getEntry('<entry_id>'))
.then((entry) => {
otherService.SetUnpublishedThroughManualAPICall(entry.sys.id);
entry.unpublish();
})
:
function HandleUnpublish(object entry) {
if(OtherService.CheckIfManualUnpublish(entry.sys.id)){
//Do some processing...
}
}
당신은이에 대한 저장소로 Contentful의 필드를 사용하도록 선택할 수 있습니다. 이 경우 게시를 취소하기 직전에이 필드를 설정하십시오. 다음과 같이하십시오 :
client.getSpace('<space_id>')
.then((space) => space.getEntry('<entry_id>'))
.then((entry) => {
entry.fields['en-US'].unpublishedTroughApi = true;
entry.update();
})
.then((entry) => entry.unpublish())
그런 다음 webhook에서 관리 API를 통해 항목을 다시 가져와 필드를 검사해야합니다. Contentful에 대한 추가 API 호출을 유발할 수 있습니다.
다시 한번 감사드립니다. @Robban, 그건 영리한 해결 방법입니다. – Manube