-2
私のプロジェクトでは、WebApi
をRefit
(link)と多く呼んでいます。基本的にはWebApi
をinterface
と定義しています。例えば:各WebApi
ためC#とWebApi:共通ベースクライアントを作成する方法
public interface ICustomer
{
[Get("/v1/customer")]
Task<CustomerResponse> GetDetails([Header("ApiKey")] string apikey,
[Header("Authorization")] string token,
[Header("Referer")] string referer);
}
、私はそのようなclient
を作成する:
public async Task<CustomerResponse> GetDetails(string apikey, string token)
{
CustomerResponse rsl = new CustomerResponse();
rsl.Success = false;
var customer = RestService.For<ICustomer>(apiUrl);
try
{
rsl = await customer.GetDetails(apikey, token, apiUrl);
rsl.Success = true;
}
catch (ApiException ax)
{
rsl.ErrorMessage = ax.Message;
}
catch (Exception ex)
{
rsl.ErrorMessage = ex.Message;
}
return rsl;
}
クライアントとの間の唯一の違いは、(上記の例のコードICustomer
に)インタフェースであり、リターン構造(IN例CustomerResponse
はBaseResponse
から派生しています)、関数は呼び出す必要があります(この例では、paramsを使用して)。
重複したコードを避けるため、基本クラスを用意する必要があります。 ありがとうございます。