gpt4 book ai didi

c# - 如何为 asp.net webapi 构建可重用的 .Net 客户端,包括 IQueryable 功能等

转载 作者:行者123 更新时间:2023-11-30 15:39:05 26 4
gpt4 key购买 nike

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

可是……现在我正在尝试构建一个可重用的 .Net 客户端库,它可以轻松访问 WebAPI 公开的所有方法。我尝试通过 Linq2Rest(很棒的 IQueryable 接口(interface)!)并使用 HttpClient 自己实现 Wrappers 来做到这一点。

我的 Linq2Rest 问题:

  • 它不是来自 Microsoft,我担心 Microsoft 会做出很多更改,这些更改在某些时候不会反射(reflect)在 Linq2Rest 中。
  • 此外,我真的不知道如何使用 Linq2Rest 调用 Put/Delete/Post,每个“Linq2Rest-Context”中都有一个 HttpClient 看起来很难看

当我自己尝试使用 HttpClient 实现客户端时,我不知道该怎么做

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

感谢每一个建议...

最佳答案

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

虽然不是微软的,但OData是一个开放标准,Linq2Rest是按照标准文档实现的。开源意味着 Linq2Rest 能够比 Microsoft 更频繁地发布。因此,它已经支持 Microsoft 目前不支持的 OData 3 规范中的任何/所有查询。

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

目前它不支持 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com