Exercício – Tornar as funções RESTful
A API do Gerenciador de Produtos está prestes a receber uma grande atualização de estilo, graças a você, desenvolvedor da Tailwind Traders. Neste exercício, você transformará todas as funções que criou anteriormente em funções RESTful, modificando os arquivos de configuração delas.
Tornar a rota GetProducts compatível com RESTful
No Visual Studio Code, abra o arquivo
api/src/index.ts
.Na definição de rota para GetProducts, restrinja a propriedade
methods
para que ela contenha apenas o valorGET
.methods: ['GET']
Adicione a propriedade
route
com um valor deproducts
para obter uma rota completa de/api/products
.route: 'products',
A definição de rota completa é:
app.http('GetProducts', { methods: ['GET'], route: 'products', // <- route: /api/products authLevel: 'anonymous', handler: GetProducts });
Salve o arquivo.
Observação
Salvar o arquivo fará com que o processo do Azure Functions encerre o depurador e ele será desconectado. Não se assuste. Você não estragou nada. Apenas fez alterações fundamentais na forma como as funções são apresentadas. Por isso, precisará reiniciar o projeto quando acabar a faxina do REST.
Tornar a função CreateProduct RESTful
Ainda no arquivo
api/src/index.ts
, restrinja a propriedade permitidamethods
aPOST
.methods: ['POST']
Adicione a propriedade
route
com um valor deproducts
para obter uma rota completa de/api/products
.route: 'products',
A definição de rota completa é:
app.http('CreateProduct',{ methods: ['POST'], route: 'products', authLevel: 'anonymous', handler: CreateProduct });
Salve o arquivo.
Tornar a função UpdateProduct RESTful
Ainda no arquivo
api/src/index.ts
, restrinja a propriedade permitidamethods
aPUT
.methods: ['PUT'],
Adicione a propriedade
route
com um valor deproducts
para obter uma rota completa de/api/products
.route: 'products',
A definição de rota completa é:
app.http('UpdateProduct', { methods: ['PUT'], route: 'products', authLevel: 'anonymous', handler: UpdateProduct });
Salve o arquivo.
Tornar a função DeleteProduct RESTful
Ainda no arquivo
api/src/index.ts
, restrinja a propriedade permitidamethods
aDELETE
.methods: ['DELETE']
Atualize a rota para usar a ID do produto como um parâmetro de rota.
route: 'products/{id}',
A definição de rota completa é:
app.http('DeleteProduct', { methods: ['DELETE'], route: 'products/{id}', authLevel: 'anonymous', handler: DeleteProduct });
Salve o arquivo.
Iniciar o projeto
Pressione F5 para iniciar o projeto do Azure Functions.
Observe que as URLs dos pontos de extremidade de função já são diferentes.
Olhe para esta API incrível. É simplesmente magnífica. Veja como você especificou exatamente a mesma rota para as funções CreateProduct, UpdateProduct e DeleteProduct. Somente o método de solicitação HTTP é diferente. Você transformou três URLs em uma, mas mantendo três pontos de extremidade. Você é um mágico.