我在使用 IHttpClientFactory 的 .NET Core 3.1 应用程序中使用 Refit (5.1.67) 作为我的 HttpClient 包装器。
我调用的 API 使用客户端凭据令牌进行保护。
我正在用这个注册客户:
services.AddRefitClient<ISomeApiClient>().ConfigureHttpClient(c =>
c.BaseAddress = new Uri(Configuration["BaseUrlFromConfig"]));
客户端具有如下所示的方法:
public interface ISomeApiClient
{
[Get("/api/somewhere")]
Task<IEnumerable<MyResponseObject>> GetItems([Header("X-User-Id")] string userId, [Header("Authorization")] string accessToken);
[Get("/api/somewhere-else")]
Task<MyResponseObject> GetItem([Header("X-User-Id")] string userId, [Header("Authorization")] string accessToken, int id);
}
我要避免的是每次调用端点时都必须显式传递 accessToken 和 userId (如上)。理想情况下,我想让我的客户看起来像这样:
public interface ISomeApiClient
{
[Get("/api/somewhere")]
Task<IEnumerable<MyResponseObject>> GetItems();
[Get("/api/somewhere")]
Task<IEnumerable<MyResponseObject>> GetItems(int id);
}
感觉就像我需要某种用于传出请求的请求中间件,我可以在其中添加这两个标头。如果它们是静态的,我只会装饰整个界面,但因为这些是无法工作的运行时值。
我在文档中找不到关于这个的任何帮助,并且希望得到任何指示。