問題タブ [http-status-code-422]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
error-handling - クライアント エラー リクエストの 400 対 422
クライアント リクエスト エラーに対して返される適切な http ステータス コードに関する多くの投稿や記事を読みました。RFC 7231で再定義された 400 を使用することを提案する人もいますが、例は構文上のものであるため、与えられた例がすべてのクライアント エラーをカバーしているかどうかはわかりません。
400 (Bad Request) ステータス コードは、クライアント エラーと見なされる何かが原因で、サーバーがリクエストを処理できない、または処理しないことを示します (例: 不正なリクエスト構文、無効なリクエスト
メッセージ フレーミング、不正なリクエスト ルーティング)。
rfc 7231 の付録 B に次のような記述がありました。
400 (Bad Request) ステータス コードが緩和
され、構文エラーに限定されなくなりました。(セクション 6.5.1)
これは、どのような種類のクライアント エラーも不適切な要求と見なすことができるということですか? クライアント要求に 400 を使用し、メッセージでより具体的なエラーを指定する方がよいでしょうか?
一方で、422 (Unprocessable Entity) を使用した方がよいという意見もあります。これはセマンティクスに重点を置いていますが、http/1.1 の webDAV 拡張である [RFC 4918][2] にのみリストされています。
422 (Unprocessable Entity) ステータス コードは、サーバー
がリクエスト エンティティのコンテンツ タイプを理解していることを意味し (したがって、
415 (Unsupported Media Type) ステータス コードは不適切です)、
リクエスト エンティティの構文は正しい (したがって 400 (Bad Request) )
ステータス コードが不適切です) が、含まれている命令を処理できませんでした。たとえば、このエラー状態は、XML
要求本文に整形式 (つまり、構文的に正しい) が含まれているが、
意味的に誤った XML 命令が含まれている場合に発生する可能性があります。
この webDAV 拡張コードを使用して http 要求を処理できますか? 422の場合、コアのhttpコードに入っていなくても使えますか?
クライアント エラーには 400 または 422 を使用する必要がありますか?
私が念頭に置いている可能性のあるクライアントエラーは次のとおりです。
有益な回答をいただければ幸いです。どうもありがとう、みんな!
更新: Google API のエラーを確認したところ、422 が使用されていませんでした。一方、Twitter では 422 が使用されていました。これまで以上に混乱しています >.< 400 が含まれているので、400 の方が適していると考えている部分もありますが、 RFC doc では、422 はそうではありません。私は間違っているかもしれません。
ruby-on-rails - GraphQL/Rails 422 Unprocessable Entity - セッションへのトークンの保存
私は現在、プロジェクトの Rails バックエンドを REST から Graphql に変更する作業を行っていますが、チュートリアルに従って認証でエラーが発生しています - https://www.howtographql.com/graphql-ruby/4-authentication/
GraphiQL エンジンを使用してすべてのリクエストをテストし、エラーを受け取りましたstatus 422 unprocessable Entity, User Must Exist
私が実行している突然変異は新しい色を作成することであるため、これは理にかなっています-これはbelongs_to
ユーザーと関係があります。
上にリンクされたページの約半分^^^^それはこれを言います:
ミューテーションが提供するトークンを使用して
signinUser
、アプリは後続のリクエストを認証できます。これを行うにはいくつかの方法があります。このチュートリアルでは、組み込みの sessionを使用するだけです。これは、クライアント アプリケーションに要件を追加しないためです。GraphQL サーバーは、各リクエストのセッション ヘッダーからトークンを取得し、関連するユーザーを検出して、この情報をリゾルバーに渡すことができる必要があります。
signinUser
ドキュメントが同じページで以前に示したようなメソッドを介して認証トークンを正常に返すことができます-それが投稿するメソッドは、このメソッドでこの想定されたセッションにトークンを保存します(これも上に投稿された同じリンクから^ ^^) :
メソッドが戻る直前にセッションを p アウトし、ユーザーがサインインするためのトークンが含まれていることに驚くことはありませんでした。
しかし、ミューテーションを実行して色を作成したとき、セッションにはまだそのトークンが含まれており、その色を正常にコミットできると期待していました。そうではなく、このリクエストのセッションを p'd にすると、空のハッシュが返されます。
組み込みのgraphqlセッションがどのように機能するかについての情報を見つけることができません-そして、私は一般的にgraphqlにまったく慣れていません。
私の主な質問は、graphqlセッションはトークン情報をキャッシュすることになっているのでしょうか? 以下のリクエストに情報が引き継がれないのはなぜsigninUser
ですか?ドキュメントでは、この認証方法は長期的な解決策ではないと主張しているため、このチュートリアルで認証を使用しようとすることさえ気にする必要がありますか?
私はこれがたくさんあることを知っていますが、これについて余分な頭脳を本当に感謝しています.
前もって感謝します!
PS。チュートリアルではリンクを使用していることを理解しており、ここでは色を使用しています。これは意図的なものであり、セマンティックの違いによってエラーが発生していないことを確認するために最善を尽くしました。
Rails バージョン - 5.2.2 (API のみを使用)
グラフql-1.7.4
グラフィックレール - 1.4.4
file-upload - POST リクエストを Redmine API に送信するときに「422 Unprocessable Entity」を修正する方法は?
redmine rest api を使用して wiki ページを作成しようとしています。認証は成功しましたが、422 エラーのため wiki ページが作成されていません。
Redmine のドキュメントには次のように書かれています。
しかし、私はどこを台無しにしているかを見つけることができるようです。2番目のリクエスト「PUT REQUEST」を実行したときに問題が発生しました。
そのため、問題はそのセクションのどこかにあることがわかります。
私の推測では、それはファイル パスまたはコンテンツ タイプのいずれかです。
これは私がこれまでに持っているものです....
Redmine ダッシュボードに Wiki ページが作成されているはずですが、422 エラーが発生します。