Exemplo básico de Web API em ASP .NET Core 2.0
Este exemplo traz uma Web API (SampleStoreDI) inspirada na arquitetura REST (Representational State Transfer) desenvolvida em Microsoft Visual Studio ASP.NET Core 2.0, que acessa uma base de dados de produtos fictícia através de HTTP Methods Request (GET, POST, PUT, DELETE), utilizando o formato JSON (JavaScript Object Notation).
O produto segue o seguinte modelo, em formato JSON:
{
"id" : Identificador do produto,
"name" : "Nome do produto",
"price" : Preço do Produto,
"description" : "Descrição do produto",
"imageUrl" : "Url para a imagem do produto"
}
Exemplo:
{
"id" : 4,
"name" : "Impressora",
"description" : "Impressora Colorida",
"price" : 1199.99,
"imageUrl" : "https://imagem_impressora.jpg"
}
Esta aplicação implementa um exemplo de Repository Pattern 1 , que oferece maior desacoplamento entre os dados (Model) e o controle da aplicação (controller), fazendo uso da injeção de dependência nativa do ASP.NET Core 2.0.
A aplicação está hospedada no ambiente da Microsoft Azure no endereço http://ljasmimsamplestore.azurewebsites.net/api/products e pode ser acessada da seguinte forma:
- HTTP GET api/products - Recupera uma lista de produtos;
- HTTP GET api/products/{id} - Recupera um produto específico;
- HTTP POST api/products - Criar um novo produto;
- HTTP PUT api/products/{id} - Atualiza um produto específico;
- HTTP DELETE api/produtcs/{id} - Exclui um produto específico.
Para consumo da WebAPI foi construída no Visual Studio 2017 uma aplicação cliente básica (SampleStoreClient) utilizando Angular2. O acesso a API está implementado no arquivo SampleStoreClient/ClientApp/app/services/product.service.ts
, através de requisições HTTP.
//Get
getProducts() {
return this.http.get("http://ljasmimsamplestore.azurewebsites.net/api/products")
.map(data => <IProduct[]>data.json());
}
//GetById
getProduct(productId: number) {
return this.http.get(`http://ljasmimsamplestore.azurewebsites.net/api/products/${productId}`)
.map(data => <IProduct>data.json());
}
//Post
addProduct(product: IProduct) {
return this.http.post("http://ljasmimsamplestore.azurewebsites.net/api/products", product);
}
//Delete
deleteProduct(productId: number) {
return this.http.delete(`http://ljasmimsamplestore.azurewebsites.net/api/products/${productId}`);
}
//Put
editProduct(product: IProduct) {
return this.http.put(`http://ljasmimsamplestore.azurewebsites.net/api/products/${product.id}`, product);
}
A aplicação cliente também encontra-se hospedada no ambiente da Microsoft Azure.