問題タブ [http-method]
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.
spring - フォームが 1 つしかない 1 つのページで、異なる HTTP メソッドをトリガーすることはできますか?
これまで、私はjQuery AJAX (または XMLHttp) を使用しPUT
てHTTP メソッドを処理し、Springを含めてきました (現在、Spring 3.2.0 を使用しています)。これらのメソッドの使用に関して、1 つの一般的な質問があります。DELETE
HiddenHttpMethodFilter
GET
POST
基本的に、単一のフォームを使用して同じページ (JSP) でINSERT
、EDIT
、UPDATE
およびのような基本的なデータベース操作を実行したいと考えています。このシナリオでは、適切なアクションでこれらのメソッドをトリガーすることは可能ですか?UPDATE
たとえば、ユーザーが削除ボタンDELETE
を押すとメソッドが呼び出され、更新ボタンが押さPUT
れるとメソッドがトリガーされ、挿入ボタンが押さPOST
れるとメソッドが呼び出され、データの取得中にメソッドが呼び出されるGET
必要があります。使用され、それに応じて、コントローラーにマップされている適切なメソッドを呼び出す必要があります (ここでも単一のフォームを持つ同じページで<form:form>...</form:form>
)。
もちろん、AJAX を使用することも可能ですが、どこでも AJAX を使用するのは適切ではありません。
RESTFul API のいくつかの重要な側面が欠けている可能性があります。どうやら、それは(無意識のうちに)不可能です。実際の答えは何ですか?
編集:
メソッドを処理したいPUT
場合、Spring フォームは次のようになります。
生成された HTML は次のようになります。
非表示<input type="hidden" name="_method" value="put"/>
フィールドは、PUT
メソッドによって処理されるように自動的に追加されます。HiddenHttpMethodFilter
メソッドを呼び出す必要がある場合DELETE
は、フォームとその生成された HTML をそれぞれ次のように変更する必要があります。
生成された HTML
実行時に動的に行う可能性はどのくらいありますか?
javascript - AngularJS $http.putPUTメソッドがデータを送信しない
正常に機能していたjquery$.ajaxから、AngularJS$http.putを使用してRESTfulAPIにアクセスするように切り替えています。
API呼び出しを行うことはできますが、PUTデータが送信されません-そのため、私のAPIは、JSON文字列を含む必要がある空のデータオブジェクトを含むPUTリクエストを認識します->data.values = 'a json structure'
以前にAngularJSの$httpを使用したことはありませんが、PHP APIでデータをダンプすると、空になります。これは私がPHPのリクエストからそれを引き出す方法です:
私のAPIでは、リクエストから送信されたapihashがPUT値に基づいて構築されたsha256ハッシュと一致しない場合、失敗します。
これはJQueryで機能していますが、$httpに切り替えただけで失敗します。PUTデータが空のように見える理由がわかりません。
http - REST ストアの正しいリターン コード
REST ストアの適切な応答を見つけようとしています。関連する RFC 2616 についてよく知っています。関連する部分は9つのメソッド定義です
今...
短い質問:
POST または PUT を使用してリソースを作成し、現在のリソース データを返したくない場合、どのコードを使用すればよいですか? 204でいいの?( 疑わしい)
ここで、 JsonRestStoreでこれらのメソッドをどのように実装したかを概説しました: https://github.com/mercmobily/JsonRestStores/blob/master/jsonrest.md
OK、これがロングバージョンです。
出発点:
- PUT CREATES または OVERWRITES のいずれかのリソース (リソースが既に存在するかどうかに応じて)
- リソースを CREATES または MODIFIES に POST します (渡される ID に応じて [「それに追加する」、つまり「特定の ID を渡す POST」]、または [作成する] に渡されない)
- ストアは、サーバー上にあるリソースを返すか、コンテンツを返さない可能性があります
これは、ストアがよく使用される方法です。はい、リソース ID を POST に渡すことができます。奇妙に聞こえるかもしれませんが、そうするために行われています。
質問 1: コンテンツを返さずに NEW リソースを PUT する場合
RFC は次のように述べています。
新しいリソースが作成された場合、オリジン サーバーは 201 (Created) 応答を介してユーザー エージェントに通知する必要があります。既存のリソースが変更された場合、リクエストが正常に完了したことを示すために、200 (OK) または 204 (コンテンツなし) の応答コードを送信する必要があります。
- ケース 1: PUT によって変更される既存のリソース:
- 現在のリソースを返す場合は 200 (OK)
- 「OK」と言って何も返さない場合は、204 (No content)。
- ケース 2: 新しいリソースを作成中
- 現在のリソースを返す場合は 201 (Created)
- ??? 何も返したくない場合
では、新しいリソースを作成したものの、その現在のステータスをサーバーに返したくない場合はどうでしょうか? EMPTY コンテンツで 201 を返しても問題ありませんか? 204用じゃないの?しかし、(RFC によると) 201 を返さなければならないので、それはできません。
質問 2: コンテンツを返さずに NEW リソースを POST する場合
POSTing について、RFC は次のように述べています。
POST メソッドによって実行されるアクションは、URI によって識別できるリソースにならない場合があります。この場合、応答に結果を説明するエンティティが含まれているかどうかに応じて、200 (OK) または 204 (コンテンツなし) のいずれかが適切な応答ステータスです。
オリジンサーバーでリソースが作成されている場合、応答は 201 (Created) であり、要求のステータスを記述し、新しいリソースを参照するエンティティと、Location ヘッダーを含む必要があります (セクション 14.30 を参照)。
2 番目の部分が実際には REST ストアに適用されないことを受け入れると、POST は常に何らかの方法で到達可能なリソースになるため、最終的には次のようになります。
ケース 1: 既存のリソースが「追加」されている、別名「ID 付きの POST」(リソースは作成されていません)
- ??? 現在のリソースを返したい場合
- ??? 現在のリソースを返したくない場合
ケース 2: 新しいリソースが作成されている (通常は ID を渡さない)
- 現在のリソースを返す場合は 201 (Created)
- ??? 現在のリソースを返却したくない場合
ただし、RFC「The action perform by the POST method may not result (...)」を「If you do a Post append」として解釈することにした場合、これは非常に大きなストレッチであり、次のようになります。
ケース 1: 既存のリソースが「追加」されている、別名「ID 付きの POST」(リソースは作成されていません)
- 現在のリソースを返す場合は 200 (OK)
- 現在のリソースを返したくない場合は 204 (No content)
ケース 2: 新しいリソースが作成されている (通常は ID を渡さない)
- 現在のリソースを返す場合は 201 (Created)
- ??? 現在のリソースを返却したくない場合
したがって、RFC を可能な限り広く解釈しても、最終的には次のような疑問が生じます。リソースを作成し、現在のリソース データを返したくない場合、どのコードを使用すればよいでしょうか? 204でいいの?( 疑わしい)
さよなら、
メルク。
node.js - putおよびdeleteメソッドにmethodoverrideが必要なのはなぜですか?
私が言いたいのは、なぜとをとput
とdelete
同じget
にするのかpost
、
それらはすべてhttp
私が使用したいときに方法でput
ありdelete
、
私は使用のようないくつかの特別なトリックをしなければなりませんmethodoverride
、
同じようにすることに関して技術的な問題はありますか?
grails - GrailsでのみPOSTとして定義されたコントローラーでallowedMethodsが生成されるのはなぜですか?
ドメイン クラスのコントローラーで生成されたコードは、「保存」、「更新」、および「削除」に対してのみ POST メソッドを許可していました。これは、GET メソッドが URL にパラメーターを表示するという理由だけですか?それとも他の考慮事項から外れていますか? POSTが作成または更新用であるのに対し、GETのセマンティックは取得用です?
Grails 2.1.1 を使用しています。
php - label.text からサーバーへのテキストの更新とテキスト ファイルへの保存
サーバー上のテキスト ファイル内のサーバー上に label.text をアップロードしようとしています。これが私のコードです。エラーは表示されていませんが、ファイルはサーバー上に作成されていますが、テキストは表示されていません。助けてください。
tomcat - Tomcat メソッドの制限の問題
これが単純なものであることはわかっていますが、機能させることができません。脆弱性スキャンをクリーンアップできるように、すべての Trace、Put、および Delete メソッドを Tomcat に制限しようとしています。
/tomcat/conf/web.xml ファイルとすべての /tomcat/webapps/*/WEB-INF/web.xml ファイルに以下を追加しようとしましたが、動作に変化は見られませんでした。次にどこを見るべきかについてのアイデアはありますか?
azure - Azure Websites PHP API - PUT および DELETE で許可されていない 405 メソッド
Azure Web サイトを使用して単純な PHP Web サービスを構築していますが、PUT および DELETE http メソッドをサポートするのに問題があります。それが web.config ファイルに入る必要があるものであると仮定すると、インターウェブの周りからいくつかのオプションを試しましたが、どれも正しく機能していないようです。何か案は?
現在の web.config ファイルは次のとおりです。
http - ミューテーションは常に POST を使用する必要がありますか?
哲学的に、私は常に、状態を変更しない HTTP リクエストには GET を使用し、変更するリクエストには POST を使用することに慣れています。ただし、最近、これに関していくつかの問題に遭遇したため、例外が発生しました。クロスサイト攻撃のようなセキュリティ上の懸念など、間違った HTTP 動詞を使用することによる非哲学的なマイナス面があるかどうか、私は興味がありました。
例外 #1
アーカイブに動的にパッケージ化された、要求されたファイルのリストのダウンロードをトリガーしたいと考えていました。ただし、ファイルのリストが非常に大きくなり、URL でクエリ文字列パラメーターとしてエンコードされると、Internet Explorer の URL の長さの制限を超える可能性がありました。これを回避するために、POST でダウンロードをトリガーすることになりました。
例外 2
ログインしているかどうかに関係なく常に表示されるボタンがありますが、ログインしている場合にのみ状態を変更できます。ログインしていないときに押すと、ログインページに移動します次に行く予定の場所を示すクエリ文字列パラメーター。ログインすると、そこにリダイレクトされ、アクションが完了します。ただし、リダイレクトは GET のみを生成でき、POST は生成できません。したがって、この状況で GET が状態を変更できるようにしました。
これらの例外の悪用や欠点はありますか? これらは、リファラー ヘッダーをチェックしても防止できないクロスサイト リクエスト フォージェリ シナリオを許可しますか?
php - PHP / CodeIgniter の GET および POST 関数
私は MVC が (とても) 好きで、今日のすべての主要な Web 言語で MVC アーキテクチャのフレームワークを独学で学ぼうとしています。
私は現在 CodeIgniter と PHP を使用しています。同じ関数を POST と GET で異なる動作にする方法をオンラインで検索しましたが、何も見つかりませんでした。CodeIgniter にはこの機能がありますか?
Ruby On Rails または ASP.NET MVC を使用したことがある場合は、私が話していることを理解できるでしょう。これらのフレームワークでは、次のことができます。
私はこれに慣れすぎて、その便利な機能なしで同じスムーズな機能を得る方法に頭を悩ませるのが難しいと感じています.
何か不足していますか?CodeIgniter で同じことを達成するにはどうすればよいですか?
ありがとう