Tag: rest

我怎样才能从我的WCFrest服务(.NET 4),使用Json.Net,而不是一个string,用引号包装返回JSON?

更新10/19/2010我知道前一段时间我问过这个问题,但是这些答案中显示的解决方法几乎不能令人满意,这对于很多人来说仍然是一个常见问题。 WCF只是不灵活。 我创build了自己的开源C#库,用于在不使用WCF的情况下创buildREST服务。 检查restcake.net或rest.codeplex.com的信息在上述图书馆。 END UPDATE 更新2012年8月2日 ASP.NET Web API (以前WCF Web API,replaceREST WCF)默认情况下使用Json.NET END UPDATE DataContractJsonSerializer无法处理Json.Net正确configuration(特别是循环)时处理的很多scheme。 一个服务方法可以返回一个特定的对象types(在这种情况下是一个DTO ),在这种情况下, DataContractJsonSerializer将被使用,或者我可以让该方法返回一个string,并使用Json.Net自己完成序列化。 问题是,当我返回一个JSONstring,而不是一个对象,发送到客户端的JSON包装在引号。 使用DataContractJsonSerializer ,返回一个特定的对象types,响应是: {"Message":"Hello World"} 使用Json.Net来返回一个JSONstring,响应是: "{\"Message\":\"Hello World\"}" 我不想在客户端上得到eval()或者JSON.parse()这个结果,如果json以stringforms返回,用引号括起来,这就是我所要做的。 我意识到行为是正确的; 这不是我想要/需要的。 我需要原始的json; 服务方法的返回types是对象的行为,而不是string。 那么,如何让我的方法返回一个对象types,但不使用DataContractJsonSerializer? 我怎样才能告诉它使用Json.Net序列化器呢? 或者,有没有办法直接写入响应stream? 所以我可以自己回来原始的json? 没有包装报价? 这是我作的例子,供参考: [DataContract] public class SimpleMessage { [DataMember] public string Message { get; set; } } [ServiceContract] [AspNetCompatibilityRequirements(RequirementsMode […]

这些是RestSharp和ServiceStack客户端代码的主要区别吗?

我一直无法作出明确的select,并希望有人(或几个人的组合)能够指出使用RestSharp与ServiceStack的客户端服务之间的差异(请记住,我已经使用ServiceStack为我的服务) 。 这是我到目前为止(仅差异)。 名单相当小,因为它们确实非常相似: ServiceStack 优点 Fluentvalidation从我已经创build的服务POCO对象 一个客户端和服务的API 代码读取更好(即Get <>(),Post <>()) 缺点 我的一些string必须写出来(即如果我使用查询参数进行GET请求,我必须在我的代码中创build该string) 我必须为每个请求/响应types(JsonServiceClient,XmlServiceClient)创build一个不同的类, RestSharp 优点 几乎所有的东西都可以是POCO(即,如果我使用查询参数进行GET请求,我只是通过代码添加参数) 在请求/响应types之间切换很简单(request.RequestFormat = DataFormat.Json / Xml) 缺点 手动validation(超出在数据注释中find的) 两个API学习(这是很小的,因为它们都相当简单) 代码不是一目了然(几乎没有)(即request.Method = Get / Post ..和主要调用是执行<T>()) 我倾向于RestSharp,因为它更倾向于直接POCO的使用和很less的string操作,但是我认为ServiceStack可能是可以接受的,以获得更容易阅读的validation和代码。 所以,这里是问题: 你喜欢哪个? 为什么一个在另一个? 我知道这不是一个完全主观的问题,但至less我正在寻找这个问题的答案(这是主观的): 我的发现是否有任何错误和/或是否有我错过的?

基于REST API的HTTP基本身份validation

我是Restful API的概念的新手。 我正在为在线商店devise一个宁静的api。 我没有正确理解ssl基本httpauthentication的概念。 这是否意味着,对于每一个请求,用户将不得不再次input他/她的用户名和密码? 有人可以请详细解释它是如何运作的,以及如何使用它? 提前致谢。

AJAX,RESTful / Rest,JSON和JSONP有什么区别?

我只是混淆了这些条款。 任何人都可以提供/解释一个例子吗?

用REST分割头发:标准的JSON REST API是否违反HATEOAS?

今天早上我正在读REST,并且遇到了HATEOAS原理(“超媒体作为应用程序状态的引擎”) 。 引用REST Wikipedia页面 : 客户端只能通过服务器在超媒体中dynamic识别的动作(例如通过超文本中的超链接)进行状态转换。 除了对应用程序的简单固定入口点以外,客户端不会假定任何特定的操作将可用于之前从服务器接收到的表示中描述的任何特定资源。 而Roy Fielding的博客 : …如果应用程序状态(因此API)的引擎没有被超文本驱动,那么它不能是RESTful,也不能是REST API。 期。 我读到这样的:客户端可能只需要根据服务器的响应主体(超文本)提供的动作来请求状态改变。 在HTML世界中,这是非常有意义的。 客户端应该只能根据通过超文本(HTML)提供给他们的链接来请求状态改变(新的动作/页面)。 当资源以其他方式表示时 – 例如JSON,XML,YAML等。这一点并不明显。 我们来看一个“REST”JSON API的例子: 我通过发送一个POST请求来创build一个新的资源(例如一个新的注释) /comments.json? # with params… 服务器回应: # Headers HTTP/1.1 201 Created Location: http://example.com/comments/3 Content-Type: application/json; charset=utf-8 … Etc. # Body {"id":3,"name":"Bodacious","body":"An awesome comment","post_id":"1"} 我知道现在可以通过标头中返回的URI访问此评论: http : //example.com/comments/3.json 当我访问http://example.com/comments/3.json时,我看到: {"id":3,"name":"Bodacious","body":"An awesome comment","post_id":"1"} 假设API的文档告诉我可以通过向相同的URI发送一个DELETE请求来删除这个注释。 这在“REST”API中相当普遍。 然而: […]

将额外的parameter passing给Django Rest Framework中的Serializer类

我想从Viewset传递一些参数给DRF Serializer类,所以我试过这个: class OneZeroSerializer(rest_serializer.ModelSerializer): def __init__(self, *args, **kwargs): print args # show values that passed location = rest_serializer.SerializerMethodField('get_alternate_name') def get_alternate_name(self, obj): return '' class Meta: model = OneZero fields = ('id', 'location') 查看 class OneZeroViewSet(viewsets.ModelViewSet): serializer_class = OneZeroSerializer(realpart=1) #serializer_class = OneZeroSerializer queryset = OneZero.objects.all() 基本上我想传递一些基于querystring从视图到Serializer类的值,然后这些将分配给字段。 这些字段不包含在模型中,实际上是dynamic创build的字段。 在这个问题stackoverflow相同的情况下,但我不明白的答案。 任何人都可以帮助我在这种情况下,或build议我更好的select。

REST与Spring和Jackson完全数据绑定

我正在使用Spring MVC来处理JSON POST请求。 在封面下面,我使用了构build在Jackson JSON处理器上的MappingJacksonHttpMessageConverter,并在使用mvc:annotation驱动时启用。 我的一项服务收到一个行动清单: @RequestMapping(value="/executeActions", method=RequestMethod.POST) public @ResponseBody String executeActions(@RequestBody List<ActionImpl> actions) { logger.info("executeActions"); return "ACK"; } 我发现Jackson将requestBody映射到java.util.LinkedHashMap项目列表(简单数据绑定)。 相反,我希望将请求绑定到types化对象列表(在本例中为“ActionImpl”)。 我知道如果直接使用Jackson的ObjectMapper,这很容易: List<ActionImpl> result = mapper.readValue(src, new TypeReference<List<ActionImpl>>() { }); 但是我想知道当使用Spring MVC和MappingJacksonHttpMessageConverter时,最好的方法是什么。 任何提示? 谢谢

Rails:你如何访问RESTful助手?

我试图通过这个指南Rails路由 ,但我陷入了第3.3节: 创build一个RESTful路由也将在你的应用程序中提供一堆帮助程序 然后他们列出一些像photos_url , photos_path等助手 我的问题: 我在哪里可以find“可用的”帮助者的完整列表? 有没有办法在控制台中调用助手? 我创build了一个应用程序,然后用script/console打开script/console 。 我试图在控制台上调用其中一个帮助器,如下所示: >> entries_url 但是得到了: NameError: undefined local variable or method `entries_url' for #<Object:0x349a4> from (irb):8

Backbone.js +rest。 fetch()后不会填充集合

我是Backbone的新手。 所以我试图从REST服务中获取数据。 这是我的简单代码: $(function () { var Entity = Backbone.Model.extend({ url: function() { return 'http://localhost:8080/rest/entity/'+this.id; } }); var EntityList = Backbone.Collection.extend({ model: Entity, url: 'http://localhost:8080/rest/entity' }); var entityList = new EntityList(); entityList.fetch(); }); 我的rest服务返回下一个JSON: [{"id":1387, "version":3, "entityName":"entity01", "entityLabel":"Entity01", "entityPluralLabel":"Entity01", "attributes": [{"id":1425, "slot":"D001", "version":0, "attributeName":"dfield", "attributeType": {"id":7, "description":"Date", "attributeType":"date", "databaseType":"DATE" }, "options":[], "order":2, "attributeLabel":"dField", "checked":null }, […]

使用PUT / POST / DELETE与JSONP和jQuery

我正在创build一个支持跨域请求,JSON / JSONP支持和主HTTP方法(PUT / GET / POST / DELETE)的RESTful API。 现在,虽然通过服务器端代码访问这个API很容易,但是将它暴露给javascript是很好的。 从我所知道的,当用jQuery做JSONP请求时,它只支持GET方法。 有没有办法使用POST / PUT / DELETE做一个JSONP请求? 理想情况下,我想从jQuery内部做到这一点(通过一个插件,如果核心不支持这一点),但我也会采取一个简单的JavaScript解决scheme。 任何链接到工作代码或如何编码将是有益的,谢谢。