標準でこれの明確な仕様を見つけるのに苦労しています。Content-Length: 0
本文を指定しないPUTリクエストを実行するときにヘッダーを含まないHTTPクライアントと、そのようなリクエストによって混乱するサーバーがあり、どのプログラムを非難すべきか疑問に思っています。
標準でこれの明確な仕様を見つけるのに苦労しています。Content-Length: 0
本文を指定しないPUTリクエストを実行するときにヘッダーを含まないHTTPクライアントと、そのようなリクエストによって混乱するサーバーがあり、どのプログラムを非難すべきか疑問に思っています。
回答:
HTTPリクエストには、Content-LengthヘッダーまたはTransfer-Encodingヘッダーがある場合、本文があります(RFC 2616 4.3)。リクエストにどちらも含まれていない場合、本文はありません。サーバーはリクエストをそのように扱う必要があります。
つまり、PUTリクエストに本文がないのは珍しいので、本当に空の本文を送信したいクライアントを設計している場合は、Content-Length:0を渡します。実際、POSTの読み取りに応じておよびPUTメソッドの定義(RFC 2616 9.5、9.6)は、本体が必須であると暗示されていると主張するかもしれませんが、本体を処理しない合理的な方法は、長さがゼロの本体を想定することです。
PUT
要求は基本的にサーバー上でファイルを作成または更新するためのものです。そして、ファイルが空であることについて違法なことは何もありませんね。
disable
とenable
は動詞です。その場合PATCH
、/users/{id}
エンドポイントで使用したいと思います。
質問には答えませんが、jaxrsによってボディレスPUTを頻繁に使用できるようになると主張します。
ボディレスプットの例:ユーザーに追加の権限を付与します。
PUT / admin / users / {username} / permit / {permission}
IETF標準では本文は必須ではありませんが、本文がない場合はcontent-lengthを0にする必要があります。自分がしていることに適した方法を使用してください。あなたがそれをコードに入れるとしたら、与えられた
int x;
int f(){ return x; }
と呼ばれるリモート変数r
。
投稿は同等です
r=f();
プットは同等です
r=x;
getはと同等です
x=r;
int f(int* resource, int body);
なり、POSTが呼び出されますf(&r, x);
-これはr
サーバーが適切であると考えるものに対して何をするかしないかもしれません。しかし、それはものを返すこともできるので...多分もっと似ていy = f(&r, x);
ます。
コンテンツがない場合、サーバーに(動詞の意味で)PUTされているのは何ですか?スペックは「囲まれた実体」などのコンテンツを意味するが、コンテンツのない要求には同封の実体を持っていないので、サーバー上に置くことは何でしょう。
もちろん、サーバーに何も配置したくない場合を除いて、その場合は、代わりにDELETEが必要になる可能性があります。
Content-Length: 0
か、{ }
体としてJSONで?
HTTP / 1.1標準http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13の次のセクションに従って、コンテンツの長さフィールドは必須です。