Tag: rest

Restful Web服务authentication

我有一个Restful Web服务API,由不同的第三方使用。 该API的一部分受到限制(您需要用户名/密码才能访问)。 我想知道什么是实现身份validation的最佳方式? 我正在使用https,因此通信被encryption。 我有两个想法: 在用户开始使用(受限)服务之前,它使用POST发送用户名/密码(因为正在使用https来encryption凭据)。 login成功后,服务器发回与此用户名匹配的随机一次性使用值(nonce)。 当下一个请求正在进行时,客户端发送先前返回的现时。 服务器匹配用户名和随机数,并沿请求的数据返回新的随机数。 每个新请求使用新的随机数。 基本上,这是一个Digest访问authentication的轻量级版本。 由于此API是从第三方使用的,所以用户名/密码可以用于每个(受限制的)请求。 由于正在使用https,它们将被encryption。 这种方法的崩溃是这样的事实,这不会是兼容的(POST将始终使用)。 我更接近于select第一种方法(这是Restful兼容,相对容易实现,XML,JSON或HTML可以使用而不用改变任何东西),但我想看看你的意见? 你有什么build议:第一,第二或第三种方法? 顺便说一句,我在服务器端使用Python。

适用于Android的REST API客户端库

我们正在构build一个基于位置的消息应用程序,使用Parse.com作为后端(Parse.com类似于Urban Airship / PubNub等),我们现在想切换到我们自己的后端,以便更好地控制。 为此,我们已经构build了一个基于node.js的后端,通过REST API公开了function 为了使用这个API,我们要构build一个Android库(类似于Parse.com的Android SDK ),它抽象所有的HTTP Requests / Response或者REST API调用,并为getUsers(),sendMessage()等各种操作提供直接的函数 在Android中实现REST API客户端的方法: 使用IntentService + ResultReceiver 服务 的AsyncTask 使用装载机 现在,考虑到我们要构build一个Android库,并且在用户与应用程序进行交互时可能会同时发生REST API调用,哪种方法最适合继续使用? 我也接受其他build议/build议。 更新 :我们首先使用IntentService + ResultReceiverbuild立我们自己的库,它工作正常。 但是我们后来偶然发现了Android Async Http 。 用它。 这很棒!

RESTfullogin失败:返回401或自定义响应

这是一个概念性的问题。 我有一个客户端(移动)应用程序需要支持REST风格的Web服务的login操作。 因为Web服务是RESTful的,所以这相当于客户端接受用户的用户名/密码,用服务validation用户名/密码,然后只记得发送所有后续请求的用户名/密码。 此Web服务中的所有其他响应均以JSON格式提供。 问题是,当我查询Web服务只是为了找出给定的用户名/密码是否有效时,Web服务是否总是以JSON数据响应告诉我它成功或不成功,还是应该以良好的凭证和HTTP返回HTTP 200 401凭证不好。 我要问的原因是,有些其他RESTful服务使用401作为错误的凭据,即使您只是询问凭据是否有效。 然而,我对401响应的理解是,它们代表了一个资源,如果没有有效的证书,就不应该访问它。 但是login资源应该可以被任何人访问,因为login资源的全部目的是告诉你你的凭证是否有效。 换句话说,在我看来,像这样的一个请求: myservice.com/this/is/a/user/action 如果提供的证书不正确,应该返回401。 但是一个请求,如: myservice.com/are/these/credentials/valid 不应该返回401,因为该特定的URL(请求)被授权有或没有有效的凭证。 我想在这方面听到一些合理的意见。 处理这个问题的标准方法是什么,是处理这个逻辑上合适的标准方法?

消费我自己的Laravel API

我正在开发一个Laravel 4应用程序,它将通过JSON REST API和Web UI对我的数据集进行相同的CRUD操作。 看来,为了防止打破DRY的原则,我的用户界面应该消耗我自己的API通过路由从UI的所有请求回到API。 我不确定这个工作的最佳方法。 据推测,我会分开的用户界面和API控制器,并以某种方式路由请求通过。 或者我应该一起看一个不同的方法? 谢谢。

REST媒体types爆炸

在尝试使用REST架构风格重新devise现有的应用程序时,我遇到了一个我想称为“Mediatype Explosion”的问题。 但是,我不确定这是否真的是REST的一个问题或固有的好处。 为了解释我的意思,以下面的例子 我们应用程序的一小部分如下所示: 收集-collections-的 – >集合-的-物品─>项 即顶层是一个集合的集合,这些集合中的每一个又是一个集合的项目。 另外,每个项目有8个属性可以单独读写。 试图公开上面的层次作为RESTful资源留给我以下媒体types: application/vnd.mycompany.collection-of-collections+xml application/vnd.mycompany.collection-of-items+xml application/vnd.mycompany.item+xml 而且,由于每个项目有8个属性可以单独读写,所以会导致另外8个媒体types。 例如,一个项目的“value”属性的这种媒体types将是: application/vnd.mycompany.item_value+xml 正如我前面提到的,这只是我们应用程序的一小部分,我期望有几种不同的集合和项目需要以这种方式公开。 我的问题是: 我有这么多的媒体types做错了吗? 什么是避免媒体types爆炸的替代devise方法? 我也意识到,上面的devise是高度细化的,尤其是揭示项目的个别属性,并为他们分别有不同的媒体types。 然而,粗糙的意思是,当客户端实际上只需要读取或者写入一个项目的单个属性的时候,就会通过networking传输不必要的数据。 你将如何处理这样的devise问题?

标头值:application / vnd.api + json

有人可以解释或给我一个链接,我可以读取之间的差异: application/vnd.api+json 和 application/json

HTTP-Get和HTTP-POST之间有什么区别,为什么HTTP-POST在安全性方面更弱

任何人都可以解释HTTP-GET和HTTP-POST之间的区别吗? 为什么人们说HTTP-POST在安全性方面比较弱?

JSON表示中的链接关系

我正在devise一个基于JSON表示的RESTful API。 为了遵守HATEOAS,我广泛地利用资源之间的联系。 因此,我按照与ATOM链接非常相​​似的方式来遵循这个序列化链接的build议 。 现在我有时会遇到问题,找出正确的链接关系types。 当一个资源包含一个自己的链接时, self关系是显而易见的。 当资源是子资源的集合和聚合,或者包含许多到相关资源的链接时,它变得更加复杂。 以博客文章为例,并考虑一个返回博客文章快照的资源 – 包括本文的作者,标签和评论。 显然,这个资源包含许多子资源,当然也应该提供单独的链接: 示例资源: { "blogpost":{ "link":{ "rel":"self", "href":"http://blog/post/4711" }, "author":{ "name":"Bob", "link":{ "rel":"???", "href":"http://author/uri" } }, "title":"foobar", "content":"A long article here…", "comments":[ { "comment":"great article", "link":{ "rel":"???", "href":"http://blog/post/4711/comment/1" }, "author":{ "name":"John Doe", "link":{ "rel":"???", "href":"http://author/uri" } } } ], "tags":[ { "value":"foo", "link":{ "rel":"???", […]

资源和端点有什么区别?

我听说“资源”和“端点”都是指同一个东西。 看来资源是一个新的术语。 他们有什么区别? “资源”是否意味着一个RESTfuldevise?

JSON格式的股票报价API(现场或历史)

我正在为自己构build一个REST风格的Web应用程序,我有兴趣获得免费的JSON格式的库存数据。 我打算为客户端使用JavaScript。 是否有免费的股票API,我可以利用, 不返回XML,不使用C#。 编辑:我发现这个JSON查询…它会做的工作? http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20(%22YHOO%22%2C%22AAPL%22%2C%22GOOG%22%2C%22MSFT%22)%0A%09%09&env=http%3A%2F%2Fdatatables.org%2Falltables.env&format=json