Exercício – Tornar as funções RESTful
A API do Gerenciador de Produtos está prestes a receber uma atualização de estilo séria, cortesia de você, o desenvolvedor da Tailwind Traders. Neste exercício, vai tornar todas as funções que criou anteriormente em funções RESTful ao modificar os ficheiros de configuração.
Tornar a rota GetProducts RESTful
No Visual Studio Code, abra o
api/src/index.ts
arquivo.Na definição de rota para GetProducts, restrinja a propriedade para
methods
que ela contenha apenas o valorGET
.methods: ['GET']
Adicione a
route
propriedade com um valor deproducts
para uma rota completa de/api/products
.route: 'products',
A definição completa da rota é:
app.http('GetProducts', { methods: ['GET'], route: 'products', // <- route: /api/products authLevel: 'anonymous', handler: GetProducts });
Guarde o ficheiro.
Nota
Salvar o arquivo fará com que o processo do Azure Functions encerre o depurador e ele será desconectado. Não se preocupe. Não perdemos nada. Apenas fez alterações fundamentais à forma como as funções são apresentadas, pelo que será necessário reiniciar o projeto quando tiver terminado a limpeza do REST.
Tornar a função CreateProduct RESTful
Ainda no
api/src/index.ts
arquivo, restrinja a propriedade permitidamethods
aPOST
.methods: ['POST']
Adicione a
route
propriedade com um valor deproducts
para uma rota completa de/api/products
.route: 'products',
A definição completa da rota é:
app.http('CreateProduct',{ methods: ['POST'], route: 'products', authLevel: 'anonymous', handler: CreateProduct });
Guarde o ficheiro.
Tornar a função UpdateProduct RESTful
Ainda no
api/src/index.ts
arquivo, restrinja a propriedade permitidamethods
aPUT
.methods: ['PUT'],
Adicione a
route
propriedade com um valor deproducts
para uma rota completa de/api/products
.route: 'products',
A definição completa da rota é:
app.http('UpdateProduct', { methods: ['PUT'], route: 'products', authLevel: 'anonymous', handler: UpdateProduct });
Guarde o ficheiro.
Tornar a função DeleteProduct RESTful
Ainda no
api/src/index.ts
arquivo, 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 completa da rota é:
app.http('DeleteProduct', { methods: ['DELETE'], route: 'products/{id}', authLevel: 'anonymous', handler: DeleteProduct });
Guarde o ficheiro.
Iniciar o projeto
Inicie o projeto das Funções do Azure ao premir F5.
Observe que as URLs para seus pontos de extremidade de função agora são diferentes.
Observe esta impressionante API. É simplesmente maravilhosa. Observe como você especificou exatamente a mesma rota para as funções CreateProduct, UpdateProduct e DeleteProduct. Apenas o método de pedido HTTP é diferente. Você transformou três URLs em um, enquanto ainda tem três endpoints. É um mágico.