タグ付けされた質問 「http-request」

1
「utf8 = true」よりも「utf8 =✓」の使用の方が望ましいですか?
最近、クエリパラメータ「utf8 =✓」を含むURIをいくつか見ました。私の最初の印象(「うーん、かっこいい」と思った後)は、これを使用して壊れた文字エンコードを検出できるということでした。 それで、これは文字エンコーディングの潜在的な問題を解決するより良い方法ですか、それとも単にハックを楽しんでいる開発者ですか?

7
検索はどのようにRESTfulインターフェースに適合しますか?
RESTfulインターフェースを設計する場合、要求タイプのセマンティクスは設計に不可欠であると見なされます。 GET-コレクションの一覧表示または要素の取得 PUT-コレクションまたは要素を置き換えます POST-コレクションまたは要素を作成する DELETE -まあ、ERM、コレクションや要素を削除 ただし、これは「検索」の概念をカバーしていないようです。 たとえば、求人検索サイトをサポートする一連のWebサービスの設計では、次の要件があります。 個々の求人広告を取得する GETへdomain/Job/{id}/ 求人広告を作成 POSTへdomain/Job/ 求人広告の更新 PUT todomain/Job/ 求人広告の削除 DELETEへdomain/Job/ 「Get All Jobs」も簡単です。 GETへdomain/Jobs/ しかし、仕事の「検索」はこの構造にどのように分類されますか? あなたは可能性があり、それは「リストコレクション」のバリエーションの主張として実装します。 GETへdomain/Jobs/ ただし、検索は複雑になる可能性があり、長いGET文字列を生成する検索を作成することは完全に可能です。つまり、ここでSOの質問を参照すると、約2000文字よりも長いGET文字列の使用に問題があります。 例として、ファセット検索があります-「ジョブ」の例を続けます。 「テクノロジー」、「役職」、「規律」、およびフリーテキストキーワード、就業年齢、場所、給与などのファセットでの検索を許可できます。 流動的なユーザーインターフェイスと多数のテクノロジと役職により、検索に多数のファセットの選択肢を含めることが可能です。 この例をジョブではなくCVに微調整すると、さらに多くのファセットがもたらされ、100個のファセットが選択された検索、または50文字の長さ(たとえば役職、大学名、雇用者名)。 そのような状況では、検索データが正しく送信されるようにするために、PUTまたはPOSTを移動することが望ましい場合があります。例えば: POSTへdomain/Jobs/ しかし意味的には、これはコレクションを作成するための命令です。 これを検索の作成として表現することもできます。 POSTへdomain/Jobs/Search/ または(以下のburninggrammaで示唆されているように) POSTへdomain/JobSearch/ 意味的には理にかなっているように思えるかもしれませんが、実際には何も作成しておらず、データを要求しています。 したがって、セマンティック上はGETですが、GETは必要なものをサポートすることを保証されていません。 ですから、質問は-可能な限りRESTfulなデザインを忠実に保ちながら、HTTPの制限内に収まるようにしながら、検索に最適なデザインは何ですか?

6
GETリクエストがサーバー上のデータを変更しないのはなぜですか?
インターネット全体で、次のアドバイスが表示されます。 GETはサーバー上のデータを変更してはいけません-そのためにPOSTリクエストを使用してください この考えの根拠は何ですか? データベースにデータを挿入するphpサービスを作成し、GETクエリ文字列でパラメーターを渡すと、なぜ間違っているのですか?(SQLインジェクションを処理するために、準備済みステートメントを使用しています)。POSTリクエストは何らかの方法でより安全ですか? または、これには何らかの歴史的な理由がありますか?もしそうなら、このアドバイスは今日どのくらい有効ですか?
109 http  http-request 

6
すべての要求に対してHttpClientの新しい単一のインスタンスを作成する必要がありますか?
最近、私はasp.netモンスターからこのブログ投稿に出くわしHttpClientました。以下の方法での使用に関する問題について話します using(var client = new HttpClient()) { } ブログの投稿によると、HttpClientリクエストごとに破棄すると、TCP接続を開いたままにできます。これにより、潜在的にSystem.Net.Sockets.SocketException。 投稿による正しい方法はHttpClient、ソケットの無駄を減らすのに役立つので、単一のインスタンスを作成することです。 投稿から: HttpClientの単一インスタンスを共有する場合、ソケットを再利用することでソケットの無駄を減らすことができます。 namespace ConsoleApplication { public class Program { private static HttpClient Client = new HttpClient(); public static void Main(string[] args) { Console.WriteLine("Starting connections"); for(int i = 0; i<10; i++) { var result = Client.GetAsync("http://aspnetmonsters.com").Result; Console.WriteLine(result.StatusCode); } Console.WriteLine("Connections done"); Console.ReadLine(); ...
57 c#  http-request 

3
HTTPリクエストヘッダーとリクエストボディの違いは何ですか?
私はモバイルクライアント用の一連のWebサービスに取り組んでいます。要件では、すべてのリクエストに含まれ、特定のリクエストに格納され、他のリクエストで結果をフィルタリングするために使用される一意のデバイスIDが必要です。 すべてのリクエストに含まれるので、カスタムHTTPヘッダーに入れることを提案しました。そのため、特定のデータがヘッダーにあるのか、他のデータと一緒にあるのかを判断するためにどの基準を使用するのか疑問に思い始めましたリクエスト本文。 そのような基準はありますか?

2
REST APIは、部分的に変更可能なリソースへのPUTリクエストをどのように処理する必要がありますか?
HTTP GETリクエストに応答して、REST API がサブオブジェクトで追加データを返すと仮定しますowner。 { id: 'xyz', ... some other data ... owner: { name: 'Jo Bloggs', role: 'Programmer' } } 明らかに、誰もがPUTバックアップできるようにしたくない { id: 'xyz', ... some other data ... owner: { name: 'Jo Bloggs', role: 'CEO' } } そしてそれを成功させます。確かに、この場合、おそらく潜在的に成功する方法さえ実装しないでしょう。 しかし、この質問はサブオブジェクトだけではありません。一般的に、PUTリクエストで変更できないデータを使用して何を行う必要がありますか? PUTリクエストから欠落している必要がありますか? 静かに捨てるべきですか? チェックする必要があり、その属性の古い値と異なる場合、応答でHTTPエラーコードを返しますか? または、JSON全体を送信するのではなく、RFC 6902 JSONパッチを使用する必要がありますか?

3
HTTPヘッダーを介してアクセストークンを送信しても安全ですか?
これは最初のRESTful Webサービスであり、セキュリティの問題が心配です。アクセストークンをHTTPヘッダー経由で送信しても安全ですか?例えば: POST /v1/i/resource HTTP/1.1 Content-Type: application/x-www-form-urlencoded Api-key: 5cac3297f0d9f46e1gh3k83881ba0980215cd71e Access_token: 080ab6bd49b138594ac9647dc929122adfb983c8 parameter1=foo&parameter2=bar を介して行われた接続SSL。また、scopeすべての属性として定義する必要があるものaccess token

2
親リソースが見つからない場合、POSTに対する適切な応答ステータスコードは何ですか?
私は次のエンドポイントを持っています: a/{id}/b b送信POSTリクエストを含むを作成します。もしa与えられたもの{id}が見つからない場合、私は、404 NOT_FOUNDまたは多分で応答すべき409 CONFLICTですか? それはplainを処理することでありa/{id}、トリックはここでサブリソースが使用されることです。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.