- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
为什么我需要提供对 ServiceStack 的 JsonServiceClient.Get 的 IReturn 或 IReturnVoid 引用?一定有充分的理由(我对框架很陌生)但我不明白为什么我必须将我的对象转换为 IReturn 包装器或使它们依赖于 ServiceStack。
我已阅读这些帖子,但找不到我正在寻找的解释(仅解决方法):
谢谢!
最佳答案
JSON 是一种无类型的数据格式。好吧,有字符串和数字、数组和键/值对——仅此而已。
JSON over HTTP 不提供任何类型信息。
ServiceStack,就像大多数其他使用 HTTP+JSON 的 RESTful 服务一样,将像用其他语言编写的其他服务一样工作——来回传递 JSON。
将 IReturn 添加到您的服务方法不会使您的服务依赖于 ServiceStack - 您可以使用任何其他 HTTP 客户端发出请求并在响应中取回 JSON。
此外,它还为您提供了使用“强类型”http 客户端 (JsonServiceClient) 的选项,它将自动映射到客户端上与服务器端相同的 .NET 类型。因此,如果您想为您的服务编写 native C#/.NET 客户端,那将非常容易。
与此同时,如果您或其他客户想要编写通用的“非类型化”Web 服务客户端,它们也可以按预期工作。
以下是我的想法,使用 ajax 客户端、未类型化的 http+json 网络服务客户端和 ServiceStack 客户端:
通用网络浏览器:
通用 HTTP 客户端:
ServiceStack 的 JsonServiceClient:
通常,您会 reference the DTO type information from the client and the server project in a *.ServiceModel assembly ,您可以在两端使用。由于 DTO 和服务的任何类型信息都“在那里”,客户端将知道如何将 JSON 反序列化为正确的类型。 IReturn 是对象上的“标记”(元数据)——较旧的 SS API 使用不同的接口(interface)来做同样的事情,但更冗长且灵 active 更低(REST 与 SOAP 的返回似乎不同)。
另请注意,您的 DTO 不需要实现 IReturn - 因此它们不需要依赖于 SS。我更喜欢仅在“操作”或通信 DTO 上使用 IReturn - 那些正在传递参数的 DTO。我喜欢在没有 IReturn 依赖的情况下保留映射到数据库表(即 - OrmLite)的 DTO。
https://github.com/ServiceStack/ServiceStack/wiki/C%23-client
关于servicestack - JsonServiceClient.Get 中 IReturn 和 IReturnVoid 的用途,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18802699/
我正在评估 ServiceStack JsonServiceClient 并且请求使用通用的 /json/reply 端点: https://techstacks.io/json/reply/GetT
我正在尝试对外部服务发出 JSON 请求,它看起来像这样: 获取请求: https://remotehost/path/mycount?foo=C&bar=21 响应: {"count":1000}
在继续学习和使用 ServiceStack 的过程中,我尝试使用 c#/WPF 应用程序使用 hello 服务。 我已经完成了使用 NuGet 安装所需文件的预期步骤: PM> install-pac
//DTO public class SampleDto : IReturn { public int Id { get; set; } public string Description {
我正在尝试使用 servicestack 进行简单的 api post 调用,但它一直抛出“未找到”异常。当使用网络浏览器 rest api 直接对 api 进行相同的 post 调用时,例如 pos
我正在尝试使用 ServiceStack 的 typescript JsonServiceClient,它适用于不需要身份验证的路由,但我找不到任何关于如何将其用于经过身份验证的路由的文档。 我正在使
此 ServiceStack 客户端代码有效: var client = new JsonServiceClient("http://localhost:32949/test"); var reque
我正在使用 servicestack 的新 API 从其余服务方法之一返回 HttpResult。有没有办法使用 JsonServiceClient 获取 HttpResult? 例如:JSonSer
我正在尝试使用 JsonServiceClient 发送自定义 HTTP header ,但从未在查询中发送 header 。 我正在使用: JsonServiceClient client = ne
我正在尝试使用 ServiceStack JsonServiceClient 与 ASP.NET MVC Controller 操作进行交互。 DateTime 对象的默认序列化行为似乎与 MVC 支
运行 OOB(浏览器外)时是否可以在 Silverlight 中使用 JsonServiceClient? 我有一个后端系统,它使用 ServiceStack 公开许多 Web 服务,我也想在系统的客
我调用以使用 JsonServiceClient 序列化我的请求对象。我的服务器使用 https,我创建了一个自签名证书。 当客户端尝试连接并且服务器响应证书不受信任且服务器的身份尚未验证时,似乎会抛
我之前发布了几个问题以了解我现在的位置: Reconnecting to Servicestack session in an asp.net MVC4 application 和 nullrefer
在我的项目中,我使用 Servicestack 从特定的 URL 获取数据,这个过程是可配置的,我在单独的线程中调用获取数据,如果出现超时错误,我想实现重试。我在 JsonServiceClient
我正在尝试使用 ServiceStack 并逐步了解这项技术。 我有一个非常简单的设置(完整的解决方案是 available for download ): 使用 ServiceStack 的独立 A
我需要在我的 android 应用程序中发送自定义 header ,我正在使用 android studio 的 servicestack 插件 http://docs.servicestack.ne
我正在使用 JsonServiceClient 调用 ThirdParty API。 var client = new JsonServiceClient(ServiceURL); var respo
为什么我需要提供对 ServiceStack 的 JsonServiceClient.Get 的 IReturn 或 IReturnVoid 引用?一定有充分的理由(我对框架很陌生)但我不明白为什么我
我想做的是: var client = new JsonServiceClient(ServiceUrl); var request = new FooQuery {Id = 1}; IEnumera
在使用 ASP.NET MVC 时,我对可测试设计有相当深刻的理解,并成功地将这种理解应用于使用 ServiceStack 构建可测试服务。然而,一个非常重要的难题让我难以理解,我如何对依赖于 Jso
我是一名优秀的程序员,十分优秀!