ソリューション" />
開発者の皆様、おはようございます☕️??。私も元気なので、あなたも元気でいることを願っています。今日、私は405メソッドは許可されていませんを受けている何人かの人々を助けに行くことにしました。 REST API を作成している場合でも、URL をリクエストしている場合でも、405 エラーが発生します。この記事では、その内容について説明します。
URL をリクエストしようとしましたが、上記のエラーが発生しました
私がリクエストしていたURLはこちらです
http://localhost:8080/users/services/start/import
@Path("/start") public class StartService { @GET @Path("/import") @Produces({"text/plain","application/xml","application/json"}) public String getVersion() { String ver=""; try{ Runtime rt = Runtime.getRuntime(); Process pr = rt.exec("C:\server\dgr -v" ); BufferedReader stdInput = new BufferedReader(new InputStreamReader (pr.getInputStream())); BufferedReader input = new BufferedReader(stdInput); // String ver =""; StringBuffer verOutput = new StringBuffer(); while((ver = input.readLine()) != null){ verOutput.append(ver + "\n"); System.out.println(ver); } }catch (Throwable t) { t.printStackTrace(); } finally { } return ver; } }
エラーの原因と解決策を調査したところ、POST リクエストまたは VSV のみが許可されているものに対して Get リクエストを試行すると、405 エラーが発生する可能性があることがわかりました。
次に、https
エラーの原因はコンテンツ タイプの問題であることがわかりました
これを変更しました @Produces({"text/plain","application/xml","application/json"})
こちらへ
@Produces("text/plain") 広告は完璧に機能しました。
これは、API に送信されるヘッダー/コンテンツ タイプが、API が期待するものと一致する必要があり、一致しない場合は HTTP 405 が返されるためです。
このタイプのエラーの詳細については、このリンクにアクセスしてください
同じエラーが発生した場合に確認できる領域
CORS の問題:
フロントエンドとバックエンドが異なるポートで実行されている場合 (例: フロントエンドが 4200、バックエンドが 8080)、フロントエンドのオリジンからのリクエストを許可するように CORS (Cross-Origin Resource Sharing) がバックエンド サーバーで適切に構成されていることを確認してください3。
サーバー応答のデバッグ:
サーバー側にログを実装して、受信リクエストとそのメソッドをキャプチャします。これは、リクエストがサーバーに到達しているかどうか、およびリクエストがどのように処理されているかを判断するのに役立ちます。
ツールを使用したテスト:
Postman や cURL などのツールを使用して、POST リクエストをエンドポイントに手動で送信します。これは、問題が Angular アプリケーション内にあるのか、サーバー自体にあるのかを特定するのに役立ちます。
以下のコメント欄でご意見を共有してください⬇️
楽しい火曜日をお過ごしください??
以上がHTTP ステータス - Rest API のメソッドが許可されていないエラー -> 解決策の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。