के लिए ऑटोफैक के साथ एचटीपी क्लाइंट रैपर मुझे एक स्टब प्रोजेक्ट मिला है जो एक एपीआई एनपॉइंट के लिए विशिष्ट एचटीपी क्लाइंट रैपर है जिसे हम बनाए रखते हैं। इसका उद्देश्य इस समाधान को अन्य .NET टीमों को वितरित करना है जिन्हें एपीआई एंडपॉइंट का उपभोग करने की आवश्यकता होगी। -वेब एपीआई
Autofac तार-अप के नीचे एक मॉड्यूल के रूप में को देखते हुए मेरे सवाल उपभोक्ता ऐसा करने देगी:
var client = PlayersAPIHttpClientModule("http:/api.players.com");
कैसे इस स्थापना उपभोक्ता की सुविधा है आधार यूआरआई पारित और फिर GetPlayerInformation विधि का उपयोग करने की ?
using Autofac;
using AutoMapper;
using Alpha.Domain.Players;
using System.Net.Http;
namespace Alpha.Clients.Players
{
public class PlayersAPIHttpClientModule : Module
{
private readonly string _serviceBaseUrl;
public PlayersAPIHttpClientModule(string serviceBaseUrl)
{
this._serviceBaseUrl = serviceBaseUrl;
}
protected override void Load(ContainerBuilder builder)
{
base.Load(builder);
builder.Register(ctx =>
{
var serviceClient = new HttpClient
{
BaseAddress =
new System.Uri(this._serviceBaseUrl)
};
return new
PlayerDomainManager(serviceClient,
ctx.Resolve<IMappingEngine>());
})
.SingleInstance()
.As<IPlayerDomainManager>();
}
}
}
यह कोर डोमेन के साथ साझा इंटरफ़ेस है।
public interface IPlayerDomainManager
{
IPlayer GetPlayerInformation (string playerId);
}
और यह स्वयं ही उजागर विधि कार्यक्षमता के साथ वर्ग है।
internal class PlayerDomainManager : IPlayerDomainManager
{
private readonly HttpClient _client;
private readonly IMappingEngine _mapper;
public PlayerDomainManager(HttpClient client, IMappingEngine mapper)
{
this._client = client;
this._mapper = mapper;
}
public IPlayer GetPlayerInformation(string playerId)
{
var response = this._client
.SendAsync
(new
HttpRequestMessage(HttpMethod.Get,
"/players/" + playerId),
CancellationToken.None)
.Result;
}
}