Tag: rest

REST API授权和authentication(网页+手机)

我已阅读oAuth,亚马逊REST API,HTTP基本/摘要等,但不能把它全部“一块”。 这可能是最接近的情况 – 为移动应用程序创buildAPI – 身份validation和授权 我想build立以API为中心的网站 – 服务。 所以(一开始)我会有一个API在中心和网站 (PHP + MySQL)通过networking接口通过cURL , Android和iPhone连接。 所以3个主要客户 – 3个API密钥。 而任何其他开发者也可以通过API接口开发,他们将获得自己的API密钥。 API行为将被接受/拒绝基于userLevel状态,如果我是一个pipe理员我可以删除任何东西等,所有其他可以操纵只有他们的本地(帐户)数据。 首先,授权 – 我应该使用oAuth + xAuth还是我自己的某种types的实现(请参阅http://docs.amazonwebservices.com/AmazonCloudFront/latest/DeveloperGuide/RESTAuthentication.html?r=9197 )? 据我所知,在亚马逊服务用户是== API用户(有API密钥) 。 在我的服务上,我需要将标准用户/帐户(在网站上注册的用户)和开发者帐户(应该有他们的API密钥)分开。 所以我首先需要授权API密钥 ,然后validation用户本身。 如果我使用亚马逊的scheme来检查开发人员的API密钥(授权他们的应用程序),我应该使用什么样的用户身份validation? 我读了关于通过api.example.org/auth (通过HTTPS ,HTTP Basic)发布我的用户名和密码,然后每转发一次请求。 如果我在Android和网站上同时login,如何pipe理令牌? 如果我只在第一次请求时(在传输用户名和密码的时候)只使用SSL,而在另一端只使用HTTP,那么中间人攻击又如何呢? 在这个例子中是不是一个问题保护REST服务的密码?

HTTP API速率限制HTTP响应头的示例

其中一个额外的HTTP状态码( RFC6585 )是 429太多的请求 我在哪里可以find对HTTP响应状态有用的HTTP / REST API速率限制HTTP响应头的示例?

使用PHPStorm或POSTman的XDebug和RESTful服务器

如何获得REST客户端(如PHPStorm或POSTman内置的客户端)与XDebug一起使用? 在我目前使用的XDebug中,使用PHPStorm和Bookmarklet提供,我可以在Chrome和Firefox中使用它 – 但是当我尝试使用POSTman或其他REST客户端时,我无法弄清楚让它开始。 干杯。

Spring RestTemplate超时

我想为我的Web应用程序使用的其他服务设置连接超时。 我正在使用Spring的RestTemplate与我的服务交谈。 我已经做了一些研究,我已经find并使用下面的XML(在我的应用程序的XML),我相信是用来设置超时。 我正在使用Spring 3.0。 我也看到了同样的问题在这里用RestTemplate的springwebservices超时configuration,但解决scheme似乎并不干净 ,我宁愿设置超时值通过Springconfiguration <bean id="RestOperations" class="org.springframework.web.client.RestTemplate"> <constructor-arg> <bean class="org.springframework.http.client.CommonsClientHttpRequestFactory"> <property name="readTimeout" value="${restURL.connectionTimeout}" /> </bean> </constructor-arg> </bean> 看来无论我设置readTimeout是我得到以下内容: 网线断开:等待约20秒,并报告以下exception: org.springframework.web.client.ResourceAccessExcep tion:I / O错误:没有路由到主机:连接; 嵌套exception是java.net.NoRouteToHostException:没有路由到主机:连接 Url不正确,所以404由rest服务返回:等待大约10秒,并报告以下exception: org.springframework.web.client.HttpClientErrorException:404 Not Found 我的要求要求更短的超时,所以我需要能够改变这些。 任何想法,我做错了什么? 非常感谢。

在HTTP标头或响应正文中留下错误消息?

我有一个暴露给iPhone和Android客户端的REST服务。 目前我遵循的HTTP代码200,400,401,403,404,409,500等 我的问题是在哪里推荐的地方把错误的原因/描述/原因? 对于REST API来说,在头文件中总是有自定义的Reason,这样更有意义吗? < HTTP/1.1 400 Bad Request – Missing Required Parameters. < Date: Thu, 20 Dec 2012 01:09:06 GMT < Server: Apache/2.2.22 (Ubuntu) < Connection: close < Transfer-Encoding: chunked 或者通过JSON在Response Body中使用它会更好吗? < HTTP/1.1 400 Bad Request < Date: Thu, 20 Dec 2012 01:09:06 GMT < Server: Apache/2.2.22 (Ubuntu) < Connection: close < […]

你如何debuggingMVC 4 API路线最好?

我有一个WP7游戏,使用RESTsharp与我的MVC4 RESTful服务器进行通信,但我经常遇到问题,使请求工作,因此我想debugging失败的地方。 这是一个例子,我的GameController上的构造GameController被击中,但Post方法没有被击中,我不明白为什么。 客户代码: public void JoinRandomGame() { client = new RestClient { CookieContainer = new CookieContainer(), BaseUrl = "http://localhost:21688/api/", }; client.Authenticator = GetAuth(); RestRequest request = new RestRequest(Method.POST) { RequestFormat = DataFormat.Json, Resource = "game/" }; client.PostAsync(request, (response, ds) => {}); } 服务器代码: public void Post(int id) { if (ControllerContext.Request.Headers.Authorization == null) { //No […]

jquery不调用$ .ajax for rails标准REST DELETE的成功方法

可能是这样的问题不是新的,但是我没有find类似的东西。 我有这样的jQuery代码: $.ajax({ url : ('/people/'+id), type : 'DELETE', dataType : 'json', success : function(e) { table.getItems(currentPage); } }); 我的Rails控制器看起来像这样: def destroy @person = Person.find(params[:id]) @person.destroy respond_to do |format| format.html { redirect_to(people_url) } format.json { render :json => @person, :status => :ok } end end 这是工作。 但是,当我使用以下(由标准生成), successcallback不会被调用: def destroy @person = Person.find(params[:id]) @person.destroy respond_to […]

如何debuggingRESTful服务?

我正在寻找一种简单的方法来debuggingRESTful服务。 例如,大多数Web应用程序都可以使用普通的Web浏览器进行debugging。 不幸的是,相同的浏览器将不允许我testingHTTP PUT,DELETE,甚至在一定程度上甚至HTTP POST。 我不想自动化testing。 我希望通过快速的完整性检查来运行新的服务,理想情况下,无需编写自己的客户端。

什么是适当的“Rails方式”在另一个域上使用RESTful Web服务?

我想编写一个Ruby on Rails应用程序,它使用RESTful Web服务API对结果执行一些逻辑,然后在我的视图上显示这些数据。 例如,假设我想编写一个在search.twitter.com上search的程序。 使用纯ruby,我可能会创build以下方法: def run(search_term='', last_id=0) @results = [] url = URI.parse("http://search.twitter.com") res = Net::HTTP.start(url.host, url.port) do |http| http.get("/search.json?q=#{search_term}&since_id=#{last_id.to_s}") end @results = JSON.parse res.body end 我试图把这个方法作为一个私有方法放到我的Rails控制器中,但我认为有一个更好的,更“Rails”的方法来做到这一点。 有一个最佳实践方法,或者这是最好的方法吗?

纠正需要授权的资源的http状态码

如果用户尝试访问需要用户login的页面,似乎有很多关于正确http状态码的混淆。 那么基本上显示login页面时会发送什么状态码? 我很确定我们需要在4xx范围内使用状态码。 我不是在谈论HTTP身份validation,所以至less有一个状态码是我们不打算使用的( 401 Unauthorized )。 现在我们应该使用什么? 答案(也在这里)似乎有所不同: 根据这里的答案,我们应该使用403 Forbidden 。 但是在状态码的描述中是: 授权不起作用,请求不应重复。 那么这看起来不是正确的。 由于授权会帮助。 所以让我们来看看其他的答案。 这里的答案甚至不使用4xx范围,而是使用302 Found 302 Found状态码的描述: 请求的资源暂时驻留在不同的URI下。 由于redirect有时可能会被改变,所以客户端应该继续使用Request-URI来处理将来的请求。 如果由Cache-Control或Expires标头字段指示,则该响应仅可caching。 我想这也不是我想要的。 由于它不是位于不同URI下的请求资源。 而是一个完全不同的资源(login页面与authentication内容页面)。 所以我走了,另一个解决scheme令人惊讶的另一个答案 。 这个答案build议我们select400 Bad Request 。 这个状态码的描述是: 由于格式错误,服务器无法理解请求。 客户端不应该不加修改地重复请求。 我认为服务器很好的理解了这个请求,但是只是在用户被authentication之前拒绝访问。 另一个答案也说, 403回应是正确的,但它结束于: 如果这是一个面向公众的网站,而您正尝试拒绝基于会话cookie的访问[这就是我所做的],200有一个合适的主体来指示需要login或302临时redirect到login页面最好。 所以403是正确的,但200或302是最好的。 嘿! 这就是我正在寻找的:最好的解决scheme。 但最好不要和正确的一样吗? 为什么这是最好的? 感谢所有那些已经到这个问题的人:) 我知道我不应该太担心。 而且我认为这个问题更具假设性(不是真的,而是因为没有更好的词而使用它)。 但这个问题现在已经困扰了我一段时间了。 如果我本来是一个经理人(他们总是拿起一些很酷的听起来的话),我会说:但是,但是,但是,安宁是重要的。 🙂 那么:在上述情况下使用状态码the right way™是什么(如果有的话)? TL;博士 […]