ホームページ >バックエンド開発 >Golang >POST を使用して同じエンドポイントを GET に追加すると、異なるクエリで一貫性のないエラー メッセージが表示される

POST を使用して同じエンドポイントを GET に追加すると、異なるクエリで一貫性のないエラー メッセージが表示される

WBOY
WBOY転載
2024-02-11 20:50:11834ブラウズ

使用 POST 添加到 GET 相同的端点和不同的查询最终会出现不一致的错误消息

php エディター Banana は、誰にとってもよくある質問に答えるためにここにあります。POST を使用して同じエンドポイントと異なるクエリを GET に追加すると、一貫性のないエラー メッセージが表示される可能性があります。 Web 開発では、サーバーにデータを配信するために GET と POST が一般的に使用される HTTP リクエスト メソッドです。 GET メソッドはデータを URL に追加し、POST メソッドはデータをリクエスト本文にカプセル化します。 GET リクエストの同じエンドポイントに POST リクエストを追加すると、クエリ パラメータが異なると、一貫性のないエラー メッセージが発生する可能性があります。これは、サーバーがリクエスト メソッドとクエリ パラメータに基づいてリクエストを処理するためで、クエリ パラメータが異なると、サーバーが異なる結果を返す可能性があります。したがって、POST リクエストと GET リクエストを使用するときは、予期しないエラー メッセージが表示されないように、エンドポイントとクエリ パラメーターの一貫性に注意を払う必要があります。

質問内容

同じルートを異なるメソッドで追加した場合、各メソッドクエリのgetコールのレスポンスが異なりますが、もう一方のメソッドはpostなので影響を受けないはずです。

郵便経由: プレイグラウンド: https://go.dev/play/p/xzoakpehggy

リーリー

予想は 404、実際は 405

投稿を削除する場合 プレイグラウンド: https://go.dev/play/p/exif00_wrfw

リーリー

結果は404

です

get リクエストの場合、ルーティングと結果は一貫している必要があります。 404-s

これまでにこの問題に遭遇した人がいるかどうか知りたいのですが?

回避策

ルーターは、パスとクエリ パラメーターに基づいて一致するものを見つけようとします。クエリ文字列パラメータが要件を満たしていないため、取得ルートは一致しませんでした。

ただし、ルートはこれらのクエリ パラメーターを考慮しないため、このパスはポスト ルートと一致します。次に、リクエスト メソッドを確認すると、ルートと一致しないため、405 メソッドは許可されていません が返されます (ルートにはハンドラーがありますが、メソッドが異なります)。

同じパスにキャッチオール get ハンドラーを追加することで、目的の動作を得ることができます:

リーリー

以上がPOST を使用して同じエンドポイントを GET に追加すると、異なるクエリで一貫性のないエラー メッセージが表示されるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。