Como obter uma lista de encomendas?
O exemplo de utilização da Web API Jasmin ilustra a utilização da API para obter a lista de encomendas disponíveis no sistema. O código apresentado foi desenvolvido em C# para numa aplicação de consola e o código fonte do exemplo está disponível no repositório de exemplos Jasmin ou Rose. AccountKey e SubscriptionKey Em primeiro lugar, é necessário definir estes dois parâmetros, que são requeridos pela Web API e que identificam de forma inequívoca a subscrição (Base Dados) do cliente. No seguinte exemplo, que consta no ficheiro Constants.cs. Access token Para aceder à Web API também é necessário o token de autenticação associado ao utilizador e à subscrição. No ficheiro Constants.cs, estão as constantes definidas como clientId e clientSecret (neste caso estamos a usar o fluxo de autenticação Client Credentias) é exemplificado um pedido para obtenção do token através da chamada ao método GetAccessTokenAsync disponivél na classe AuthenticationProvider.cs. HttpClient Para fazer chamadas a uma Web API REST em C# pode utilizar-se a seguinte classe: Como no exemplo: Configuração do access token Os pedidos à Web API requerem sempre o access token anterior. Deve ser incluído nos headers do pedido. No caso do endpoint de consulta de encomendas, os dados da encomenda serão devolvidos no corpo da mensagem do resultado em formato JSON. Para o efeito, criamos uma classe C# muito simples que inclui apenas os atributos da encomenda necessários para o exemplo. Neste momento a chamada à Web API pode ser executada a partir de um HTTP Client. Note-se que na construção do pedido deve constar sempre o URL base do produto seguido da palavra "api", da AccountKey e SubscriptionKey terminando com o modulo e a entidade sobre a qual a operação será realizada.Conceitos
internal class RoseConstants
{
internal const string AccountKey = "HXDID1P";
internal const string SubscriptionKey = "HXDID7M-HXDIDGJ";
}// Get the authorization access token
string accessToken = await GetAccessTokenAsync();
Console.WriteLine(accessToken != null ? "Authorization token found." : "Authorization token not found.");
System.Net.Http.HttpClient
using (HttpClient client = new HttpClient())
{
(…)
}client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", AccessToken);Dados da encomenda
internal class OrderResource
{
#region Internal Properties
public Guid Id
{
get;
set;
}
public string DocumentType
{
get;
set;
}
public string Serie
{
get;
set;
}
public int SeriesNumber
{
get;
set;
}
public string Company
{
get;
set;
}
#endregion
}Execução do pedido
// URI of the endpoint
string endpoint = string.Format(CultureInfo.CurrentCulture, "{0}/{1}/{2}/sales/orders", ApiBaseAddress, AccountKey, SubscriptionKey);
// Send the request (POST)
Uri endpointUri = new Uri(endpoint);
using (HttpResponseMessage response = await client.PostAsync(endpointUri, content))
{
(…)
}