Uncaught exception when a request body is not valid e.g. JSON
まだ誰も着手していません。
評価
調査の方向性
duct.middleware.web/format から始めて、muuntaja.middleware/wrap-format がどのように適用され、オプションがどのように渡されるかを調べます。利用可能な wrap-exception の動作を比較し、そのうえでオプションを介してカスタム handler をどのように設定すべきかを判断します。完了の条件は、不正なリクエストボディがキャッチされない例外ではなく、処理済みの 400 レスポンスを返すことです。
索引モデルが issue の本文から書いたものです。
説明
Hi,
I found that a usage of muuntaja.middleware/wrap-format is used in duct.middleware.web/format component without wrapping it into muuntaja.middleware/wrap-exception thus when a request body contains invalid JSON an exception is raised and couldn't be caught.
Quick and dirty fix could be like this:
(defmethod ig/init-key ::format [_ options]
(fn [a]
(mm/wrap-exception
(mm/wrap-format a (deep-merge mc/default-options options))
(fn [ex fmt request]
{:status 400
:headers {"Content-Type" "text/plain"}
:body (str "Malformed " format " request.")}))))
But I think the best would be to allow a developer to define its own handler via options.
What do you think?
Thanks for feedback.
- 主要言語
- Clojure
- スター
- 22
- フォーク
- 22
- PR マージ指標
- 30日以内にマージされた PR はありません
環境構築
このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
duct-framework/module.web のほかの issue
-
難易度 3/5 1〜2日 初心者へのやさしさ 45/100
duct-framework/module.web#23 · コメント 4 件 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 25/100
duct-framework/module.web#21 ·
-
難易度 4/5 3〜5日 初心者へのやさしさ 30/100
duct-framework/module.web#7 · コメント 4 件 ·
-
難易度 4/5 3〜5日 初心者へのやさしさ 35/100
duct-framework/module.web#4 · コメント 1 件 ·
duct-framework/module.web の issue をすべて見る
似ている issue
-
bug
難易度 1/5 1時間未満 初心者へのやさしさ 92/100
editor-code-assistant/eca#655 ·
メンテナーはふだん 2 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 85/100
メンテナーはふだん 1 日以内に返信
-
needs triage
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
calcit-lang/calcit#2151 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
worker/start rejects middleware supplied as a Var対応中かも @rajp152k が 2 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100