3

我计划在 .NET 之外使用 ServiceStack 提供的 REST 服务。我打算为 java 和 obj-c 编写客户端。这应该很容易,因为它是一个 REST 服务,但是在文档中它似乎另有建议:

但是 ServiceStack 包含两个客户端,它们在异常处理等方面针对 ServiceStack 进行了优化。

我将如何使用 Android 实现 ServiceStack 客户端?只需遵循正常的 REST 消费程序?我应该担心任何异常处理问题吗?

此外,身份验证是否会成为问题(我将使用 BasicAuthentication)?

4

1 回答 1

4

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的IRestClientIRestClientAsync 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 表单。

于 2012-04-15T00:34:36.923 回答