ServiceStack Web 服务提供纯 HTTP/REST API,它们本质上只是通过网络传输的序列化 POCO DTO。您可以控制整个 HTTP 输出,因为 ServiceStack 不会在您的序列化有效负载周围添加任何额外的内容。
期望纯序列化 DTO
自以为是的性质来自 ServiceClients 假设服务只是返回纯序列化 DTO(即没有额外的 cruft),它只是将其按原样反序列化为指定的响应类型。ServiceClient 的独特之处在于它们为您提供了一个强类型的端到端 API,无需任何代码生成,因为您可以重用定义 Web 服务的 POCO DTO。
回退到预定义的路线
在 API 中未指定 arelativeOrAbsoluteUri
的 API,如Send<TResponse>(dto),默认情况下将使用 ServiceStack 自动提供的预定义路由,允许您调用 Web 服务,而无需为它们指定任何自定义路由。您当然可以选择使用您的自定义路由,而不是坚持使用允许您指定要使用的 url的IRestClient和IRestClientAsync API。
自动错误处理
C# ServiceStack ServiceClients 进行了优化,因为按照惯例,ServiceStack Web 服务将在您的 Response DTO 的ResponseStatus属性中序列化结构化错误响应(仅当它有一个时)。所有服务客户端所做的只是将错误响应反序列化为类型化的 C# WebServiceException,这使您的 C# 客户端可以对结构化错误进行强类型访问,如Validation wikipage中详细说明的那样。
基本上 ResponseStatus 属性只是一个约定(不是一些反 REST 魔术),您仍然可以控制返回的 HttpStatus 代码和描述。它只是另一个所有 REST 客户端都可以平等访问的纯 DTO 属性 - 这是一个简单的 JavaScript ss-validation.js例程,它提取 responseStatus 元数据并将错误注入 Twitter Bootstrap HTML 表单。