Tag: rest

Android上最好的REST客户端框架/实用工具

我即将构build一个将使用REST风格的Web服务的Android应用程序。 我不想自己编写REST客户端,因为我希望它尽可能有效和稳定(这是我第一次使用REST)。 是否有任何(免费)的框架或实用程序可用于Android / Java,我可以在我的项目中使用?

REST和WebServices之间的区别

REST和WebService(SOAP)有什么区别,我看了facebook api,他们使用HTTP头和一些参数(可能是xml或非),并返回结果在XML中,其他SOAP完全相同,HTTP头+ XML参数和返回标题+ XML。 REST还需要一些authentication令牌,其中SOAP使用http会话,该会话与用于authentication和其他信息的令牌完全相同。 我只能看到SOAP是REST的一些高级版本吗? 还是有其他的性能考虑? 阅读REST只是谈论客户端服务器通信的非常高的水平,但即使是SOAP也完全一样。 任何人都可以指出它在哪里可以定义正确的REST和SOAP的边界。 我们在.net中透明地使用了大量的SOAP,但是我只想知道是否真的值得向REST支付额外的费用,目前所有的一切都运行得非常顺利。 我知道REST是一个体系结构,SOAP是一个协议,但我的问题是详细的说,目前的SOAP WebService的SOAP实现有REST架构吗?

带有AuthorizeAttribute的ASP.NET Web API授权

使用新的ASP.NET Web APItesting版。 我似乎无法得到authentication用户的build议方法,工作。 在build议的方法似乎是,将[Authorize]filter添加到API控制器。 例如: [Authorize] public IEnumerable<Item> Get() { return itemsService.GetItems(); } 这不符合预期的工作。 请求资源时,您将被redirect到login表单。 哪个不是很适合REST风格的webapi。 我应该如何继续? 在将来的版本中它会以不同的方式工作吗?还是应该回到实施我自己的操作filter?

Jersey客户端:如何添加列表作为查询参数

我正在为具有列表作为查询参数的GET服务创build一个Jersey客户端。 根据文档 ,有可能有一个列表作为查询参数(这个信息也在@QueryParam javadoc),检查出来: 通常,方法参数的Javatypes可以: 是一个原始types; 有一个接受单个String参数的构造函数; 有一个名为valueOf或fromString的静态方法,它接受一个String参数(例如,参见Integer.valueOf(String)和java.util.UUID.fromString(String)); 要么 是List,Set或SortedSet,其中T满足2或3以上。 结果集合是只读的。 有时参数可能包含多个同名的值。 如果是这种情况,则可以使用4)中的types来获得所有值。 但是,我不知道如何使用Jersey客户端添加列表查询参数。 我了解替代解决scheme是: 使用POST而不是GET; 将List转换为JSONstring并将其传递给服务。 第一个不好,因为服务的正确的HTTP动词是GET。 这是一个数据检索操作。 如果你不能帮助我,第二个是我的select。 🙂 我也在开发服务,所以我可以根据需要进行更改。 谢谢! 更新 客户端代码(使用json) Client client = Client.create(); WebResource webResource = client.resource(uri.toString()); SearchWrapper sw = new SearchWrapper(termo, pagina, ordenacao, hits, SEARCH_VIEW, navegadores); MultivaluedMap<String, String> params = new MultivaluedMapImpl(); params.add("user", user.toUpperCase()); params.add("searchWrapperAsJSON", (new Gson()).toJson(sw)); ClientResponse […]

我应该在公共API中使用UUID作为资源吗?

我正在构build一个SaaS应用程序,并希望公开与当前数据存储实现(Postgres自动递增ID)无关的资源的ID。 这些堆栈溢出的post( 一 两个 )表明,创build本地唯一的ID是很难的,我不如使用UUID,这当然很容易和安全地生成几乎任何语言。 我对这种方法很满意,但是我想知道为什么我找不到来自大型SaaS /托pipe公司的任何API。 例如: Shopify: 9位数字 Twilio: 34个字符的string Twitter: 20+位数字 AMEE: 12个字符A-Z0-9 所以基本上没有人使用UUID。 有没有这个原因 – 这里没有发明,更聪明的内部身份证algorithm或其他? 在我的情况下,在没有任何内部algorithm的情况下,使用UUID最合适吗?

如何自动化REST API的文档(Jersey实现)

我已经使用Java Jersey(和JAXB)编写了一个非常广泛的REST API。 我也使用Wiki编写了文档,但是它是一个完全手动的过程,非常容易出错,特别是当我们需要修改时,人们往往会忘记更新wiki。 从环顾四周,大多数其他REST API也都是手动创build文档。 但是我想知道如果这可能是一个很好的解决scheme。 需要为每个端点logging的事物types是: 服务名称 类别 URI 参数 参数types 响应types 响应types模式(XSD) 示例请求和响应 请求types(Get / Put / Post / Delete) 描述 可能返回的错误代码 当然,还有一些一般的东西是全球性的 安全 REST概述 error handling 等等 这些一般的东西可以很好地描述一次,不需要自动化,但是对于Web服务方法本身来说,自动化它似乎是非常理想的。 我想过也许使用注释,编写一个生成XML的小程序,然后是一个XSLT,它应该生成HTML中的实际文档。 使用自定义XDoclet更有意义吗? 任何帮助将非常感激,艾伦

无法在HttpResponseMessage标头上设置Content-Type标头?

我正在使用ASP.NET WebApi来创build一个RESTful API。 我在我的一个控制器中创build一个PUT方法,代码如下所示: public HttpResponseMessage Put(int idAssessment, int idCaseStudy, string value) { var response = Request.CreateResponse(); if (!response.Headers.Contains("Content-Type")) { response.Headers.Add("Content-Type", "text/plain"); } response.StatusCode = HttpStatusCode.OK; return response; } 当我通过AJAX的浏览器放到那个位置,它给了我这个例外: 错误的标题名称。 确保请求头与HttpRequestMessage一起使用,使用HttpResponseMessage响应头和使用HttpContent对象的内容头。 但是不是Content-Type一个完全有效的响应头? 为什么我得到这个exception?

Angular JS:REST / CRUD后端的GET / POST / DELETE / PUT客户端的完整示例?

我已经实现了一个REST / CRUD后端,以下面这篇文章为例: http : //coenraets.org/blog/2012/10/creating-a-rest-api-using-node-js-express-and-mongodb / 。 我有MongoDB在本地运行,我没有使用MongoLabs。 我已经遵循了使用ngResource和工厂模式的Google教程,并且我有查询(获取所有项目),获取项目(GET),创build项目(POST)以及删除项目(DELETE)。 我很难实现PUT后端API需要的方式 – 包含id(… / foo /)的URL,还包含更新的数据。 我有这样的代码来定义我的服务: angular.module('realmenServices', ['ngResource']). factory('RealMen', function($resource){ return $resource('http://localhost\\:3000/realmen/:entryId', {}, { query: {method:'GET', params:{entryId:''}, isArray:true}, post: {method:'POST'}, update: {method:'PUT'}, remove: {method:'DELETE'} }); 我从这个控制器代码调用方法: $scope.change = function() { RealMen.update({entryId: $scope.entryId}, function() { $location.path('/'); }); } 但是当我调用更新函数时,URL不包含ID值:它只是“/ realmen”,而不是“/ realmen / ID”。 我已经尝试了各种解决scheme,包括添加“RealMen.prototype.update”,但仍然无法获得entryId显示在URL上。 (它也看起来像我将不得不build立自己的DB字段值的JSON […]

正确的REST响应为空表?

假设您想通过调用get api/users来获取用户列表,但是目前表被截断,所以没有用户。 什么是这种情况下404或204的正确答案?

基本的HTTP和承载令牌authentication

我目前正在开发一个REST-API,它是HTTP-Basic保护的开发环境。 由于真正的身份validation是通过令牌来完成的,我仍然试图弄清楚,如何发送两个授权头。 我试过这个: curl -i http://dev.myapp.com/api/users \ -H "Authorization: Basic Ym9zY236Ym9zY28=" \ -H "Authorization: Bearer mytoken123" 我可以例如禁用我的IP的HTTP身份validation,但由于我通常在不同的dynamicIP环境下工作,这不是一个好的解决scheme。 所以我错过了什么?