ASP.NET Core Refit Client for RESTful API:如何划分客户端

Posted

技术标签:

【中文标题】ASP.NET Core Refit Client for RESTful API:如何划分客户端【英文标题】:ASP.NET Core Refit Client for RESTful API: How to divide clients 【发布时间】:2022-01-22 17:17:57 【问题描述】:

我目前正在使用 ASP.NET Core 5 和 Refit(使用 HttpClientFactory)为 RESTful API 构建客户端。我有点困惑的是如何划分 API 接口(为不同的 API 端点/资源编写多少个单独的接口)。

假设我们有一个具有以下端点的 API,每个端点都有一些子路由(例如 .../id 或 .../id/pets)和/或不同的 HTTP 动词:http ://myhost/api/customershttp://myhost/api/employees

这里的最佳实践是什么,编写一个覆盖整个 API 的接口IMyHostApi?还是将其划分为IMyHostCustomersApiIMyHostEmployeesApi 之类的内容,然后添加多个具有相应基地址的 Refit 客户端?

对于上下文,客户端将像这样添加:

services
    .AddRefitClient<IGitHubApi>()
    .ConfigureHttpClient(c => c.BaseAddress = new Uri("https://api.github.com"));

【问题讨论】:

【参考方案1】:

如果您不想将所有端点都放在一个巨大的界面中,您可以使用此 Refit 功能 - https://github.com/reactiveui/refit#interface-inheritance。

在这种情况下,您的基本接口将派生自您的拆分接口,并且您将拥有一个 API 入口点。并且所有的端点都会在逻辑上分成不同的接口

【讨论】:

感谢您的回答。不过,接口继承并不真正适用于我的问题。我没有想要在多个服务/接口之间共享的任何 API 端点。我的问题是,为具有相同基本 URL 的不同 API 端点/REST 资源定义多个接口是否有意义。从链接中的示例来看,这似乎是一种做法,所以我想我会根据它们的使用情况来拆分我的接口。

以上是关于ASP.NET Core Refit Client for RESTful API:如何划分客户端的主要内容,如果未能解决你的问题,请参考以下文章

为啥在 Asp.Net Core 中使用 Steeltoe.Discovery.Client 库会不断增加内存?

ASP.NET Core 中的 PostAsJsonAsync 方法在哪里?

为啥我的 SelectListItem 无法编辑 ASP.NET Core MVC

如何在 ASP.NET Core 中测试 https 重定向?

2021-07-01 .NET高级班 82-ASP.NET Core RabbitMQ的确认机制

ASP.Net Core MVC - 自定义属性的客户端验证