Tag: 其余

HTTP响应头的惯例是向客户端通知弃用的API

我正在升级我们的REST API端点,我想在通知客户端调用不推荐使用的端点时通知客户端。 我应该在响应中使用什么标题,并在“此API版本已被弃用,请查阅最新文档以更新您的端点”

loggingRESTful API的标准方法

我正在为一个新的内部Web服务编写一个RESTful API的规范。 这不是很长很简单,但即使如此,这是我第一次使用严格的REST(而不是作弊的实际原因 – 避免PUT和DELETE因为他们是一个PHP的痛苦,等等)。 我想知道是否有任何标准的方法或loggingREST接口的最佳做法? 我希望团队的其他成员能够一目了然地了解它,并且对于任何想要编写客户端的人来说,都能够理解底层代码。

RESTful API文档

我将很快devise一个RESTful API,因此我需要描述它以使其他人能够开始使用它来实现客户端。 我查了一下,但不幸的是,我还没有发现任何描述基于Web的RESTful服务的标准化forms。 我要找的东西就像JavaDoc,尽pipe它不一定要用任何代码生成。 我也不是在谈论像WADL这样的东西,我宁愿要有一些我可以分发的人类可读文档。 由于RESTful基于Web的服务的性质,标准化文档应该相当容易。 它应该只列出可用的资源,相应的URI,允许的方法,内容types并描述可用的操作。 你有什么build议吗? 在此先感谢和问候

使用POST创build请求,响应代码200或201和内容

假设我编写了一个REST服务,其目的是向系统添加一个新的数据项。 我计划发布到 http://myhost/serviceX/someResources 假设有效,我应该使用什么响应代码? 我可能会返回哪些内容。 我正在查看HTTP响应代码的定义并查看这些可能性: 200:返回描述或包含操作结果的实体; 201:这意味着创build。 含义*请求已完成并导致创build新资源。 新创build的资源可以由响应实体中返回的URI(s)引用,其中由Location标题字段给出的资源的最具体的URI。 响应应该包括一个包含资源特性和位置的实体,用户或用户代理可以从中select一个最合适的实体。 实体格式由Content-Type头域中给出的媒体types指定。 * 后者听起来更符合Http规范,但我什么都不清楚 响应应该包括一个包含资源特征和位置列表的实体, 手段。 build议? 解释?

在PHP中处理PUT / DELETE参数

我正在为CodeIgniter的REST客户端库工作 ,我正在努力解决如何在PHP中发送PUT和DELETE参数。 在一些地方,我看到人们使用这些选项: $this->option(CURLOPT_PUT, TRUE); $this->option(CURLOPT_POSTFIELDS, $params); 令人讨厌的是,这似乎什么都不做。 这是设置PUT参数的正确方法吗? 如果是这样,我该如何设置DELETE参数? $ this-> option()是我的库的一部分,它只需构build一个CURLOPT_XX常量数组,并在执行构build的cURL请求时将它们发送到curl_setopt_array()。 我正在尝试使用下面的代码读取PUT和DELETE参数: case 'put': // Set up out PUT variables parse_str(file_get_contents('php://input'), $this->_put_args); break; case 'delete': // Set up out PUT variables parse_str(file_get_contents('php://input'), $this->_delete_args); break; 这里有两个select,我用错误的方法来解决这个问题,或者在我的库中有一个错误。 如果你能让我知道这是否应该在理论上工作,我可以锤掉debugging,直到我解决它。 我不想浪费更多的时间在一个根本上错误的方法上。

REST URI约定 – 创build资源时的单数或复数名称

我是REST的新手,我发现在一些RESTful服务中,他们使用不同的资源URI来进行更新/获取/删除和创build。 如 创build – 使用/资源与POST方法(观察复数)在某些地方使用/资源 (单数) 更新 – 使用/资源/ 123与PUT方法 获取 – 使用/资源/ 123与GET方法 我对这个URI命名约定有点困惑。 我们应该使用复数或单数来创造资源? 在决定的时候应该是什么标准呢?

REST复杂/复合/嵌套资源

我试图围绕基于REST的API来解决概念的最佳方式。 不包含其他资源的平坦资源是没有问题的。 我陷入困境的是复杂的资源。 比如我有一个ComicBook的资源。 ComicBook拥有各种各样的属性,如作者,发行编号,date等。 漫画书也有1..n封面的清单。 这些封面是复杂的对象。 他们包含了很多有关封面,艺术家,date,甚至封面的64位编码图像的信息。 对于漫画书上的GET,我只能返回漫画,以及所有封面,包括base64的图片。 获得一个漫画可能不是一个大问题。 但是,假设我正在构build一个客户端应用程序,该应用程序想要在表中列出系统中的所有漫画。 该表将包含来自ComicBook资源的一些属性,但我们当然不希望显示表中的所有封面。 返回1000本漫画书,每一本都有多个封面,会导致大量的数据通过networking传递,在这种情况下最终用户不需要的数据。 我的本能是使Cover成为资源,ComicBook包含封面。 所以现在Cover是一个URI。 GET漫画现在工作,而不是巨大的封面资源,我们发回每个封面的URI和客户端可以检索封面资源,因为他们需要他们。 现在我在创build新漫画时遇到了问题。 当然我创作至less要有一个封面,其实这可能是一个商业规则。 所以现在我被困住了,我要么迫使客户强制执行业务规则,首先提交封面,获取封面的URI,然后在列表中发布带有该URI的漫画书,或者在漫画书上的POST采取不同的观点资源比吐出来。 POST和GET的传入资源是深度副本,其中传出的GET包含对从属资源的引用。 封面资源可能是必要的,因为我敢肯定,作为一个客户,我想在某些情况下解决封面的方向。 因此,不pipe依赖资源的大小如何,问题都以一般forms存在。 总的来说,您如何处理复杂的资源,而不会强迫客户“知道”这些资源是如何组成的?

RESTauthenticationscheme的安全性

背景: 我正在deviseREST Web服务的身份validationscheme。 这并不是“真正的”需要安全的(这更像是一个个人项目),但是我想尽可能地保证它的安全性和学习体验的安全性。 我不想使用SSL,因为我不想要麻烦,而且大部分都是为了设置它。 这些SO问题让我开始特别有用: RESTfulauthentication 保护REST API / Web服务的最佳实践 最好的SOAP / REST / RPC Web API的例子? 你为什么喜欢他们? 他们有什么问题? 我正在考虑使用简化版本的Amazon S3身份validation (我喜欢OAuth,但似乎太复杂了,我的需要)。 我正在添加一个随机生成的服务器提供的nonce ,以防止重播攻击。 为了解决这个问题: S3和OAuth都依靠签名请求URL和几个选定的标头。 他们都不签署 POST或PUT请求的请求正文 。 这难道不是一个中间人攻击,它保留了url和headers,并用攻击者想要的任何数据replace请求主体? 看起来好像我可以通过在被签名的string中包含请求主体的散列来防范这一点。 这是安全的吗?