Exercício – Tornar as funções RESTful

Concluído

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

  1. No Visual Studio Code, abra o arquivo api/src/index.ts.

  2. Na definição de rota para GetProducts, restrinja a propriedade methods para que ela contenha apenas o valor GET.

    methods: ['GET']
    
  3. Adicione a propriedade route com um valor de products 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
    });
    
  4. 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

  1. Ainda no arquivo api/src/index.ts, restrinja a propriedade permitida methods a POST.

    methods: ['POST']
    
  2. Adicione a propriedade route com um valor de products 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
    });
    
  3. Salve o arquivo.

Tornar a função UpdateProduct RESTful

  1. Ainda no arquivo api/src/index.ts, restrinja a propriedade permitida methods a PUT.

    methods: ['PUT'],
    
  2. Adicione a propriedade route com um valor de products 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
    });
    
  3. Salve o arquivo.

Tornar a função DeleteProduct RESTful

  1. Ainda no arquivo api/src/index.ts, restrinja a propriedade permitida methods a DELETE.

     methods: ['DELETE']
    
  2. 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
    });
    
  3. Salve o arquivo.

Iniciar o projeto

  1. Pressione F5 para iniciar o projeto do Azure Functions.

  2. Observe que as URLs dos pontos de extremidade de função já são diferentes.

    Captura de tela do terminal do Visual Studio Code mostrando os pontos de extremidade em execução em novas rotas.

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.