POSTリクエストを作成するためのコードは次のとおりです。 ここでエラー処理について100%確信しているわけではありませんが、要求が成功しなかった場合に本文を取得することが重要でした。フェッチでjson解析エラーが発生したペイロードを取得します。
私がまだ残している問題の1つは、サーバーが200 OKで無効なjsonで応答した場合、そのペイロードをログに記録できますか? Fetchのログを記録する正しい方法は何ですか?
Fetch(data.notificationUrl, {
method: 'POST',
body: post_data,
headers: {
'Content-Type': 'application/json'
}
}).then((res) => {
if (!res.ok) {
// Could reject the promise here but than response text wouldn't be available
//return Promise.reject(`Response was not OK. Status code: ${res.status} text: ${res.statusText}`);
return res.text().then((txt) => `Response was not OK. Status code: ${res.status} text: ${res.statusText}.\nResponse: ${txt}`);
}
// response ok so we should return json, could follow https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch and determine the payload type by content-type header...
return res.json();
}).then((response) => {
if (response) {
// set result
// ...
// redirect
return reply.redirect(data.redirectUrlDirectory);
}
return reply(Boom.preconditionFailed(`Did not reply with correct payload! json:'${JSON.stringify(response)}'`));
}).catch((err) => {
return reply(Boom.badData(`Could not notify on url ${data.notificationUrl} about the payment ${id}.\nError: "${err}"`));
});
bodyがJSONに対して「解析可能」である場合、 'res.json()'は有効なjsonを返します。 jsonメソッドが失敗した場合、それを「キャッチ」する必要があります。それは、とにかく約束です。 –
これは私の質問のようなものでした。もし本体がJSONで解析できないのであれば?どのようにそれを読むには? – Karpik