datsukan blog
🧻

ContentfulのWebhookで送信するPayloadにはエスケープが必要な特殊文字を含まないようにする

この記事は投稿してから1年以上が経過しています。

結論

ContentfulのWebhookで送信するPayloadにはエスケープが必要な特殊文字を含まないようにする。
理由はContentful側でエスケープする方法がないため。

背景

Contentfulで記事を投稿した際、Twitterへ投稿するためのWebAPIにWebhookからリクエストを行うように設定していた。
その際、記事のslugtitleを下記のようにリクエストボディ(Payload)に設定していた。

{
  "token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "slug": "{ /payload/fields/slug/ja }",
  "title": "{ /payload/fields/title/ja }",
  "revision": "{ /payload/sys/revision }"
}

基本的にはこれでも問題ないが、titleは日本語の記事タイトルが入るため、記号等も任意で設定できるようになっている。
そのためクォーテーションなどを入れた際にエスケープされていない不正なJSONになってしまい、WebAPI側でエラーになっていた。

対処

現状Contentfulからリクエストする際にエスケープする方法は無さそうなので、エスケープが必要な記号が常に含まれないEntryidを渡すようにした。
WebAPIの処理内でidを使ってContentfulからslugtitleを取得するようにしている。

コメント
 
URLをコピーしました
Profile picture
datsukan

24歳。埼玉県在住。東京都のSaaS企業でバックエンドエンジニアとして勤務しています。

© 2022 datsukan