最近,我使用了ASP.NET WebAPI,其中包括一些显示结果的Html-Page,在浏览器/提琴手中尝试OData查询等,它们给我留下了深刻的印象,到目前为止一切工作都很好。

但...
现在,我正在尝试构建一个可重用的.Net客户端库,该库提供对WebAPI公开的所有方法的轻松访问。
我尝试通过Linq2Rest(出色的IQueryable-Interface!)并通过HttpClient自己实现Wrappers来实现此目的。

我的Linq2Rest问题:


它不是来自Microsoft,我担心Microsoft会有很多更改,这些更改在某些时候不会反映在Linq2Rest中。
我也真的看不到如何用Linq2Rest调用Put / Delete / Post,在每个“ Linq2Rest-Context”中都有一个HttpClient看起来很丑陋


当我尝试使用HttpClient自己实现客户端时,我不知道如何


发出针对IQueryable-WebAPI-Get的调用,而无需先将每个记录加载到客户端(在我的场景中,大约20000条记录很常见)
避免为每个“ APIController” -Client编写非常相似的代码,最后我将拥有约15-20个Controller,它们非常相似,但返回不同的“对象”


感谢您的每条建议...

最佳答案

我是Linq2Rest的开发人员,您的观点非常有效。创建Linq2Rest是为了在WebAPI之外添加OData支持。如果您已经在使用WebAPI,则一定要坚持使用Microsoft。

它不是来自Microsoft,而是OData是一个开放标准,并且Linq2Rest是根据标准文档实现的。开源意味着Linq2Rest的发布比Microsoft更频繁。因此,它已经支持Microsoft当前不支持的OData 3规范中的“任何/所有”查询。

将客户端注入每个上下文是为了减少对客户端支持的服务的限制。现在由您来定义端点。我正在考虑如何从单个上下文支持多个端点。

当前它不支持PUT / POST / DELETE,但是如果您将其作为功能请求发布到项目中(https://bitbucket.org/jjrdk/linq2rest/issues?status=new&status=open),则肯定是添加到管道中。

编辑:最新的预发行版增加了对PUT / POST / DELETE操作的支持。该API目前正在测试中。如果您从2.5.0.0下载版本,那么您将找到它的支持。

关于c# - 如何为asp.net webapi构建可重用的.Net客户端,包括IQueryable功能等,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10812283/

10-10 11:49