Skip to content

C#API客户端代理

303 words
2 min
  • ABP可以动态创建 C# API 客户端代理来调用您的远程 HTTP 服务 (REST API)。这样,您无需通过自定义httpclient来调用你的接口。
  • 我们发现创建的abp项目都有一层xxx.HttpApi.Client的项目,这个模块就是用来生成客户端代理的。

如何使用

  • 比如我们封装了一个BookStore的模块,并且打包成了服务,并单独部署,假设部署的访问端口是http://localhost:44111,
  • 按照我们以前如果需要去调用这个服务,需要通过httpclient来处理。
  • abp已经帮我们封装好了。我们只需要在我们需要调用的层添加BookStore.HttpApi.Client的引用,然后注册模块依赖。

配置

json
{
  "RemoteServices": {
    // BookStoreService 这个名字在BookStore.HttpApi.Client的module定义
    "BookStoreService": {
      "BaseUrl": "http://localhost:44111/"
    } 
  } 
}

调用接口

  • 这个时候直接注入BookStore的service接口就可以在你的其他服务中调用BookStore服务了。

如何传递token

  • 默认情况下,远程服务调用将使用当前用户的访问令牌。但是,您可以通过将访问令牌传递给远程服务调用来覆盖此默认行为。
csharp
[Dependency(ReplaceServices = true)]
[ExposeServices(typeof(IRemoteServiceHttpClientAuthenticator))]
public class AccessTokenRemoteServiceHttpClientAuthenticator : IRemoteServiceHttpClientAuthenticator, ITransientDependency
{
   
    public async Task Authenticate(RemoteServiceHttpClientAuthenticateContext context)
    {
  
            // 获取token
            context.Request.SetBearerToken(currentAccessToken);
        }
    }
}

如有转载或 CV 的请标注本站原文地址