Tag: rest

使用Facebook进行身份validation的网站的REST API

我们有一个网站,在网站上login和validation自己的网站的唯一方法是与Facebook(这不是我的select)。 当您第一次使用Facebooklogin时,会自动为您创build一个帐户。 我们现在要为我们的网站创build一个iPhone应用程序,并且为他人使用我们的服务提供一个公共API。 这个问题是关于如何从应用程序/ APIauthentication我们的网站,并分成两部分: 什么是正确的方式来处理RESTauthentication从API到只使用Facebook OAuth作为身份validation方法的网站? 我已经阅读并研究了很多关于REST API的标准authentication方法。 我们不能使用基于HTTPS的基本身份validation之类的方法,因为没有这样的用户证书。 像这样的东西似乎只是用于validation使用API​​的应用程序。 目前,我能想到的最好方法是在API上点击/授权端点,redirect到Facebook OAuth,然后redirect回站点,并提供API的用户可以使用的“令牌”来validation后续要求。 对于我们创build的官方应用程序,我们不一定需要以相同的方式使用公共API。 那么与我们的网站交谈并authentication用户的最佳方式是什么? 我理解(我认为)如何使用API​​(公共)密钥和秘密(私人)密钥来authentication使用我们的API的第三方应用程序。 但是,当涉及到authentication使用该应用程序的用户时,我们对如何解决这个问题感到困惑,因为我们必须对Facebook进行身份validation。 我觉得我错过了一些非常明显的东西,或者不完全了解公共REST API应该如何工作,所以任何build议和帮助将不胜感激。

REST能够在POST之后返回内容吗?

我正在使用RESTlet,并创build了一个资源。 我通过重写acceptRepresentation方法来处理POST。 客户端应该向我发送一些数据,然后我将它存储到数据库,设置响应201(SUCCESS_CREATED),我需要返回一些数据到客户端,但返回typesacceptRepresentation是无效的。 在我的情况下,我需要返回一些标识符,以便客户端可以访问该资源。 例如,如果我有一个资源与URL /资源和客户端发送POST请求我添加新的行在数据库中,其地址应该是/资源/ {id}。 我需要发送{id}。 难道我做错了什么? REST原则是否允许POST后返回一些东西? 如果是的话,我该怎么做,如果没有办法处理这种情况呢?

servlet和web服务的区别

这两个有什么区别? 我发现谷歌上的一些结果没有任何结论。 这是一个后续问题: 假设我使用@Controller注解创buildspring mvc web app注释类,并创build一些能够成功地从前端 – >后端传输一些信息的东西,反之亦然,也许某些数据库可能涉及到后端。 你会怎么称呼? 剩下的Web服务或servlet或其他东西?

使用http DELETE删除资源

所以,鉴于Http中的DELETE动词是幂等的,当我发出以下请求时,第二个(或第三个或第四个等等)会发生什么? DELETE /person/123 第一次,资源被删除,我返回一个204(成功,没有内容)。 我应该在随后的电话或404(未find)返回204?

保护REST API而不重新发明轮子

在deviseREST API时,通常先validation用户身份? 我正在寻找的典型用例是: 用户想要获取数据。 当然很酷,我们喜欢分享! 获取一个公共API密钥并阅读! 用户想要存储/更新数据…哇等等! 你是谁,你能做到吗? 我想build立一次,并允许说一个networking应用程序,一个Android应用程序或iPhone应用程序来使用它。 REST API似乎是这样的需求的合理select 为了说明我的问题,我将使用一个简单的例子。 我有一个数据库中的项目,它有一个评级属性(整数1到5)。 如果我正确理解REST,我将使用我select的语言来实现GET请求,该语言返回如下所示的csv,xml或json: http://example.com/product/getrating/{id}/ 说我们select我们返回的JSON: { "id": "1", "name": "widget1", "attributes": { "rating": {"type":"int", "value":4} } } 这对于面向公众的API来说很好。 我得到那部分。 我有很多问题是如何将这与安全模型相结合? 我习惯了networking应用程序的安全性,我有一个会话状态在任何时候都可以识别我的用户,所以我可以控制他们可以做什么,不pipe他们决定发送给我什么。 据我所知,这不是RESTful,所以在这种情况下将是一个不好的解决scheme。 我会尝试使用相同的项目/评级的另一个例子。 如果用户“JOE”想要添加评级到一个项目 这可以使用: http://example.com/product/addrating/{id}/{givenRating}/ 在这一点上,我想存储的数据说,“JOE”给了产品{id}评级{givenRating}。 问:我怎么知道请求来自“JOE”而不是“BOB”。 此外,如果是用户的电话号码更合理的数据呢? 我到目前为止是: 1)使用HTTP的内置function在每个请求进行身份validation,无论是纯HTTP还是HTTPS。 这意味着每个请求现在都采取以下forms: https://joe:joepassword@example.com/product/addrating/{id}/{givenRating}/ 2)像私人和公共密钥一样使用Amazon S3的方法: http : //www.thebuzzmedia.com/designing-a-secure-rest-api-without-oauth-authentication/ 3)无论如何都要使用cookie,并打破REST的无状态部分。 第二种方法对我来说似乎比较好,但是我还想知道我是否真的必须重新发明这整个事情呢? 散列,存储,生成密钥等都由我自己? 这听起来很像在典型的Web应用程序中使用会话,并自己重写整个堆栈,通常我的意思是“你做错了”,特别是在处理安全性时。 编辑:我想我应该提到OAuth以及。

如何在RESTful Web服务中实现login?

我正在构build一个带有服务层的Web应用程序。 服务层将使用RESTfuldevise来构build。 我们的想法是,将来有一段时间我们可能会构build其他应用程序(iPhone,Android等),它们使用与Web应用程序相同的服务层。 我的问题是这个 – 我如何实现login? 我想我在从一个更传统的基于动词的devise转向基于资源的devise方面遇到了麻烦。 如果我用SOAP构build这个,我可能会有一个名为Login的方法。 在REST中,我应该有一个资源。 我很难理解如何构build我的URIlogin。 应该是这样的: http:// myservice / {用户名}?p = {密码} 编辑:前端Web应用程序使用传统的ASP.NET框架进行身份validation。 但是,在身份validation过程中,我需要validation提供的凭据。 在传统的Web应用程序中,我将执行数据库查找。 但在这种情况下,我正在调用一个服务,而不是做一个数据库查询。 所以我需要一些服务来validation提供的凭据。 除了validation所提供的证书之外,我还可能在成功通过validation之后还需要一些有关用户的信息,比如他们的全名,ID等等。我希望这个问题更清楚。 还是我没有想到这个正确的方法? 我觉得我很难正确描述我的问题。 科瑞

RESTful API的令牌身份validation:是否应定期更改令牌?

我正在用Django和django-rest-framework构build一个RESTful API。 作为authentication机制,我们select了“Token Authentication”,我已经在Django-REST-Framework的文档中实现了它,问题是,应用程序是否应该定期更新/更改令牌,如果是的话,是怎么做的? 应该是移动应用程序需要更新令牌还是Web应用程序应该自动执行? 最佳做法是什么? 任何人在这里经验与Django REST框架,并可以build议一个技术解决scheme? (最后一个问题的优先级较低)

你用什么工具testing你的公共REST API?

寻找工具来testingREST API。 到目前为止,我只知道SoapUI 。 我尝试过SOAPUI,但是 – 至less在Mac上 – 这太糟糕了。 想知道人们用什么来testing他们自己的API。

比较和对比REST和SOAP Web服务?

我目前弄清楚类似的是使用互联网协议(HTTP)在消费者和提供者之间交换数据。 区别在于: SOAP是基于XML的消息协议,而REST是一种架构风格 SOAP使用WSDL进行消费者和提供者之间的通信,而REST只使用XML或JSON来发送和接收数据 SOAP通过调用RPC方法调用服务,REST只是通过URLpath调用服务 SOAP不返回人类可读的结果,而REST结果是可读的,只是简单的XML或JSON SOAP不仅仅是HTTP,它还使用其他协议,如SMTP,FTP等,REST仅仅是HTTP 这就是我所知道的,他们之间的差异。 任何人都可以纠正我,并添加更多。

如何构build一个REST API,其中包含资源的ID数组

我正在为我的项目构build一个REST API。 获取给定用户的INFO的API是: api.com/users/[USER-ID] 我也想让客户端通过一个用户ID列表。 我如何构buildAPI以使其成为RESTful并获取用户标识的列表?