This webapi project is cosuming Brasil API - https://brasilapi.com.br/api/ - to get CEP code details.
HTTP Client Wrapper and Flur will show the same result.
Generic HTTP wrapper to consume RESTful API.
AddressController.cs
[HttpGet("cep-details/http-client-wrapper/{cep:int}")]
public async Task<IActionResult> GetAddressDetailsByCepUsingHttpClientWrapper(int cep)
{
return Ok(await HttpClientWrapper<AddressViewModel>.Get(_urlBrasilApi + $"cep/v1/{cep}"));
}
Result
{
"cep": "89010025",
"state": "SC",
"city": "Blumenau",
"neighborhood": "Centro",
"street": "Rua Doutor Luiz de Freitas Melro",
"service": "viacep"
}
HttpClientWrapper.cs
public static async Task<T> Get(string url)
{
T result = null;
using (var httpClient = new HttpClient())
{
var response = httpClient.GetAsync(new Uri(url)).Result;
if (!response.IsSuccessStatusCode)
{
throw new Exception(await response.Content.ReadAsStringAsync());
}
await response.Content.ReadAsStringAsync().ContinueWith((Task<string> x) =>
{
if (x.IsFaulted)
throw x.Exception;
result = JsonConvert.DeserializeObject<T>(x.Result);
});
}
return result;
}
- This HTTP Client Wrapper was built based on this Medium article
Flurl is a modern, fluent, asynchronous, testable, portable, buzzword-laden URL builder and HTTP client library for .NET.
AddressController.cs
[HttpGet("cep-details/flur/{cep:int}")]
public async Task<IActionResult> GetAddressDetailsByCepUsingFlur(int cep)
{
return Ok(await _urlBrasilApi.AppendPathSegment("cep/v1/" + cep).GetJsonAsync<AddressViewModel>());
}