WebApiClient icon indicating copy to clipboard operation
WebApiClient copied to clipboard

如何将IHttpApi接口定义中的参数传给TokenProvider

Open LGinC opened this issue 4 months ago • 2 comments

需求是需要根据appName参数动态切换token。 目前是想通过在TokenProvider中获取参数值后去请求token,但是ApiRequestContext和ApiParametersContext都无法通过依赖注入获取到。

需要如何实现此功能

LGinC avatar Aug 21 '25 03:08 LGinC

为接口注册TokenProvider时,可以指定alias值,同时[OAuthTokenAttribute]也有AliasParameterName参数值用于设置alias取值的参数

xljiulang avatar Aug 21 '25 07:08 xljiulang

[OAuthToken("myTokenProvider")]
public interface IMyApi : IHttpApi
{
    Task<MyResult> GetResultAsync(string appName, string id);
}

services.AddTokenProvider<IMyApi, MyTokenProvider>("myTokenProvider");

这样吗?

和我的需求不太相符。

我的需求大概是这样的。 定义了appName和apiKey的映射字典

"ApiKeys": {
  "testApp": "xxxxxxxxx",
  "prodApp": "xxxxxxxx",
  "preApp": "xxxxxxxx"
}

然后在调用IMyApi.GetResultAsync时传入appName,比如传入的是testApp,则设置Authorization请求头的值为对应的apiKey

LGinC avatar Aug 23 '25 11:08 LGinC