Questions tagged «http-request»


7
搜索如何适合RESTful接口?
在设计RESTful接口时,请求类型的语义被认为对设计至关重要。 GET-列表收集或检索元素 PUT-替换集合或元素 POST-创建集合或元素 DELETE-好吧,erm,删除集合或元素 但是,这似乎没有涵盖“搜索”的概念。 例如,在设计一套支持求职网站的Web服务时,您可能具有以下要求: 获取个人招聘广告 GET来domain/Job/{id}/ 创建招聘广告 发布到domain/Job/ 更新职位广告 PUT到domain/Job/ 删除招聘广告 删除到domain/Job/ “获得所有工作”也很简单: GET来domain/Jobs/ 但是,工作“搜索”如何落入这种结构? 您可以声称这是“列表集合”的变体,并实现为: GET来domain/Jobs/ 但是,搜索可能很复杂,完全有可能产生一个生成长GET字符串的搜索。也就是说,在这里引用SO问题,使用GET字符串的长度超过2000个字符存在一些问题。 一个示例可能是多面搜索-继续“工作”示例。 我可能会在以下方面进行搜索-“技术”,“职位名称”,“学科”以及自由文本关键字,工作年龄,位置和薪水。 凭借流畅的用户界面和大量技术和职务,搜索可以包含大量方面的选择是可行的。 通过将此示例调整为简历而不是职位,可以带来更多的方面,您可以很容易地想象出搜索时选择了100个方面,甚至只是40个方面(每个方面50个字符)(例如,职务,大学名称,雇主名称)。 在那种情况下,可能需要移动PUT或POST,以确保将正确发送搜索数据。例如: 发布到domain/Jobs/ 但是从语义上讲,这是创建集合的指令。 您也可以说这将表示为搜索的创建: 发布到domain/Jobs/Search/ 或(如下面的燃烧语法所建议) 发布到domain/JobSearch/ 从语义上看,这似乎很有意义,但是您实际上并没有创建任何东西,而是在请求数据。 因此,从语义上讲,这是一个GET,但不能保证GET支持您所需要的。 因此,问题是-尝试尽可能地遵循RESTful设计,同时确保我保持在HTTP的限制之内,最适合搜索的设计是什么?

6
为什么GET请求不更改服务器上的数据?
在互联网上,我看到以下建议: GET永远不要更改服务器上的数据-为此使用POST请求 这个想法的基础是什么? 如果我做一个将数据插入数据库的php服务,并在GET查询字符串中传递参数,那为什么会出错呢?(我使用准备好的语句来处理SQL注入)。POST请求以某种方式更安全吗? 还是有一些历史原因?如果是这样,那么今天的建议有多有效?
109 http  http-request 

6
我们是否应该为所有请求创建一个新的HttpClient单一实例?
最近,我从asp.net monsters上看到了此博客文章,该文章讨论了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"); …
57 c#  http-request 

3
HTTP请求标头和请求正文中包含什么?
我正在为移动客户端开发一组Web服务,并且要求将唯一的设备ID包含在所有请求中,存储在某些请求中,并用于过滤其他请求中的结果。 有人建议将其放在自定义HTTP标头中,因为它将包含在所有请求中,因此我开始怀疑可以使用什么标准来确定给定的数据段是否属于标头或与标头中的其他数据一起请求正文。 有没有这样的标准?

2
REST API应该如何处理对部分可修改资源的PUT请求?
假设REST API响应HTTP GET请求,在子对象中返回一些其他数据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错误代码? 还是我们应该使用RFC 6902 JSON补丁而不是发送整个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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.