0

私はAPIをコーディングしていて、UPDATEの部分で立ち往生しています。私がRESTについて読んだことから、更新操作はHTTPPUTを使用して公開する必要があります。

OK、PUTは私にデータのストリームを提供します。少なくともPHPでは、このデータのデコードは私の責任です。では、文字列データとファイルのアップロードを組み合わせてPUTを使用するにはどうすればよいですか?POSTで実行できることはわかっていますが、RESTfulな方法で実行しようとしています。

multipart / form-dataを使用する必要があり、それはPUTに移植可能ですか(つまり、この種の要求をさまざまな言語で送信するのは簡単です)?私はproperこれを行う方法を見つけようとしています。繰り返しになりますが、multipart / form-dataを使用する場合は、解析を担当するため、エラーやパフォーマンスの低下が発生する可能性があります。このマルチパート/...が私が求めていることを実行する方法である場合、パーサーを提案できますか?

ありがとう

4

2 に答える 2

2

どんなデータをしようとしていPUTますか?PUTはダイレクトパブリッシング方式であることを忘れないでください。クライアントはサーバーにデータを送信し、基本的に「PUTこのファイルを/home/sites/.../myfile.txtに」と言います。

サイトにデータを公開し、新しいページを作成する場合に便利です。標準のファイルアップロードフォーム(「ここにアバター画像をアップロードしてください!」)の場合はあまり役に立ちません。潜在的に悪意のあるユーザーがアップロードされたファイルの移動先を指定できるようにしたくありません。

これは、POSTを使用する場合です。これは、「ファイルはmyfile.txtと呼ばれ、必要な処理を実行します」という意味になります。

于 2011-07-06T14:48:19.730 に答える
2

PUTの一般的な規則は、べき等であるということです

2xを呼び出すPUT /user/{userId}/files/foo.txtと同じ状態になり、2回目の呼び出しではfoo.txtをオーバーライドするだけです。あなたは物事を「設定」しています。

2xPOST /user/{userId}/filesを呼び出すと、2つの異なるファイルになります。あなたは物事を「追加」しています。

したがって、専用のターゲットに書き込みたい場合は、PUTを使用します。どのようなファイルをアップロードしますか。たとえば、画像のアップロードの場合は、POSTを使用します(応答内でターゲットURLを取得します)。ユーザー向けに一種のファイルストレージを設計している場合は、PUTを使用します。これは、ほとんどの場合、ユーザーが特定の場所に書き込み(設定)するためです(通常のファイルシステムの場合と同様)。

たぶん、具体的なケースの詳細/要件がありますか?

于 2011-07-06T19:57:15.213 に答える