Partilhar via


Tutorial: Assinar e fazer pedidos com o Postman

Neste tutorial, vamos configurar e utilizar o Postman para fazer um pedido contra Azure Communication Services através de HTTP. No final deste tutorial, terá enviado com êxito uma mensagem SMS através dos Serviços de Comunicação e do Postman. Em seguida, poderá utilizar o Postman para explorar outras APIs no Azure Communication Services.

Neste tutorial, vamos:

  • A transferir o Postman
  • Configurar o Postman para assinar Pedidos HTTP
  • Fazer um pedido à API de SMS dos Serviços de Comunicação para enviar uma mensagem.

Pré-requisitos

Transferir e instalar o Postman

O Postman é uma aplicação de ambiente de trabalho capaz de fazer pedidos de API em qualquer API HTTP. É frequentemente utilizado para testar e explorar APIs. Vamos transferir a versão mais recente do Ambiente de Trabalho a partir do site do Postman. O Postman tem versões para Windows, Mac e Linux, pelo que pode transferir a versão adequada para o seu sistema operativo. Depois de transferida, abra a aplicação. Será apresentado um ecrã inicial, que lhe pede para iniciar sessão ou para criar uma conta do Postman. A criação de uma conta é opcional e pode ser ignorada ao clicar na ligação "Ignorar e ir para a aplicação". A criação de uma conta irá guardar as definições de pedidos da API no Postman, o que lhe pode permitir recolher os seus pedidos noutros computadores.

Ecrã Início do Postman a mostrar a capacidade de criar uma conta ou de avançar e aceder à aplicação.

Assim que tiver criado uma conta ou ignorado a criação de uma, deverá agora ver a janela principal do Postman.

Criar e configurar uma coleção do Postman

O Postman pode organizar os pedidos de várias formas. Para efeitos deste tutorial. Vamos criar uma Coleção do Postman. Para tal, selecione o botão coleções no lado esquerdo da aplicação:

Ecrã principal do Postman com o separador Coleções realçado.

Uma vez selecionado, clique em "Criar nova Coleção" para iniciar o processo de criação da coleção. Será aberto um novo separador na área central do Postman. Atribua o nome que quiser à coleção. Aqui, a coleção tem o nome "Azure Communication Services":

Postman com uma Coleção de Serviços de Comunicação aberta e o nome da coleção realçado.

Assim que a coleção for criada e com o nome, estará pronto para a configurar.

Adicionar variáveis de coleção

Para processar a autenticação e facilitar os pedidos, vamos especificar duas variáveis de coleção na coleção dos Serviços de Comunicação recém-criada. Estas variáveis estão disponíveis para todos os pedidos na sua coleção dos Serviços de Comunicação. Para começar a criar variáveis, visite o Separador da Variável da Coleção.

Postman com o separador Variáveis de uma Coleção de Serviços de Comunicação.

Uma vez no separador coleção, crie duas variáveis:

  • key - Esta variável deve ser uma das chaves da página chave do Azure Communication Services na portal do Azure. Por exemplo, oW...A==.
  • ponto final – esta variável deve ser o ponto final do Azure Communication Services a partir da página chave. Certifique-se de que remove a barra à direita. Por exemplo, https://contoso.communication.azure.com.

Introduza estes valores na coluna "Valor Inicial" do ecrã de variáveis. Uma vez introduzido, prima o botão "Persistir Tudo" imediatamente acima da tabela à direita. Quando configurado corretamente, o ecrã do Postman deverá ter um aspeto semelhante ao seguinte:

Postman com as variáveis de uma Coleção de Serviços de Comunicação configuradas corretamente.

Pode saber mais sobre variáveis ao ler a documentação do Postman sobre as mesmas.

Criar um script de pré-pedido

O próximo passo é criar um Script de pré-pedido no Postman. Um script de pré-pedido é um script que é executado antes de cada pedido no Postman e pode modificar ou alterar parâmetros de pedido em seu nome. Vamos utilizá-lo para assinar os nossos pedidos HTTP para que possam ser autorizados por Azure Communication Services. Para obter mais informações sobre os Requisitos de assinatura, pode ler o nosso guia sobre autenticação.

Vamos criar este script na Coleção para que seja executado em qualquer pedido dentro da coleção. Para tal, no separador coleção, clique no Sub-separador "Script de Pré-pedido".

Postman com o Script de pré-pedido de uma Coleção de Serviços de Comunicação Sub-Tab Selecionado.

Neste Sub-Separador, pode criar um script de pré-pedido ao introduzi-lo na área de texto abaixo. Pode ser mais fácil escrever isto num editor de código completo, como o Visual Studio Code , antes de o colar quando estiver concluído. Vamos analisar cada parte do script neste tutorial. Não hesite em saltar para o fim se quiser simplesmente copiá-lo para o Postman e começar. Vamos começar a escrever o script.

Escrever o script de pré-pedido

A primeira coisa que vamos fazer é criar uma cadeia de carateres de Hora Universal Coordenada (UTC) e adicioná-lo ao Cabeçalho HTTP "Data". Também armazenamos esta cadeia numa variável para utilizá-la mais tarde ao assinar:

// Set the Date header to our Date as a UTC String.
const dateStr = new Date().toUTCString();
pm.request.headers.upsert({key:'Date', value: dateStr});

Em seguida, vamos hash do corpo do pedido com SHA 256 e colocá-lo no x-ms-content-sha256 cabeçalho. O Postman inclui algumas bibliotecas padrão para hashing e assinatura global, pelo que não precisamos de as instalar ou exigir:

// Hash the request body using SHA256 and encode it as Base64
const hashedBodyStr = CryptoJS.SHA256(pm.request.body.raw).toString(CryptoJS.enc.Base64)
// And add that to the header x-ms-content-sha256
pm.request.headers.upsert({
    key:'x-ms-content-sha256',
    value: hashedBodyStr
});

Agora, vamos utilizar a nossa variável de ponto final especificada anteriormente para discernir o valor do cabeçalho do Anfitrião HTTP. Temos de o fazer, uma vez que o cabeçalho anfitrião só está definido depois de este script ser processado:

// Get our previously specified endpoint variable
const endpoint = pm.variables.get('endpoint')
// Remove the https, prefix to create a suitable "Host" value
const hostStr = endpoint.replace('https://','');

Com estas informações criadas, podemos agora criar a cadeia, que iremos assinar para o Pedido HTTP, que é composta por vários valores criados anteriormente:

// This gets the part of our URL that is after the endpoint, for example in https://contoso.communication.azure.com/sms, it will get '/sms'
const url = pm.request.url.toString().replace('{{endpoint}}','');

// Construct our string which we'll sign, using various previously created values.
const stringToSign = pm.request.method + '\n' + url + '\n' + dateStr + ';' + hostStr + ';' + hashedBodyStr;

Por fim, temos de assinar esta cadeia com a nossa chave dos Serviços de Comunicação e, em seguida, adicioná-lo ao nosso pedido no Authorization cabeçalho:

// Decode our access key from previously created variables, into bytes from base64.
const key = CryptoJS.enc.Base64.parse(pm.variables.get('key'));
// Sign our previously calculated string with HMAC 256 and our key. Convert it to Base64.
const signature = CryptoJS.HmacSHA256(stringToSign, key).toString(CryptoJS.enc.Base64);

// Add our final signature in Base64 to the authorization header of the request.
pm.request.headers.upsert({
    key:'Authorization',
    value: "HMAC-SHA256 SignedHeaders=date;host;x-ms-content-sha256&Signature=" + signature
});

O script de pré-pedido final

O script de pré-pedido final deve ter um aspeto semelhante ao seguinte:

// Set the Date header to our Date as a UTC String.
const dateStr = new Date().toUTCString();
pm.request.headers.upsert({key:'Date', value: dateStr});

// Hash the request body using SHA256 and encode it as Base64
const hashedBodyStr = CryptoJS.SHA256(pm.request.body.raw).toString(CryptoJS.enc.Base64)
// And add that to the header x-ms-content-sha256
pm.request.headers.upsert({
    key:'x-ms-content-sha256',
    value: hashedBodyStr
});

// Get our previously specified endpoint variable
const endpoint = pm.variables.get('endpoint')
// Remove the https, prefix to create a suitable "Host" value
const hostStr = endpoint.replace('https://','');

// This gets the part of our URL that is after the endpoint, for example in https://contoso.communication.azure.com/sms, it will get '/sms'
const url = pm.request.url.toString().replace('{{endpoint}}','');

// Construct our string which we'll sign, using various previously created values.
const stringToSign = pm.request.method + '\n' + url + '\n' + dateStr + ';' + hostStr + ';' + hashedBodyStr;

// Decode our access key from previously created variables, into bytes from base64.
const key = CryptoJS.enc.Base64.parse(pm.variables.get('key'));
// Sign our previously calculated string with HMAC 256 and our key. Convert it to Base64.
const signature = CryptoJS.HmacSHA256(stringToSign, key).toString(CryptoJS.enc.Base64);

// Add our final signature in Base64 to the authorization header of the request.
pm.request.headers.upsert({
    key:'Authorization',
    value: "HMAC-SHA256 SignedHeaders=date;host;x-ms-content-sha256&Signature=" + signature
});

Introduza ou cole este script final na área de texto no Separador Script de Pré-pedido:

Postman com um script de Pré-pedido da Coleção de Azure Communication Services introduzido.

Depois de introduzido, prima CTRL + S ou prima o botão Guardar, isto irá guardar o script na coleção.

Botão Guardar Script de Pré-pedido do Postman.

Criar um pedido no Postman

Agora que está tudo configurado, estamos prontos para criar um pedido dos Serviços de Comunicação no Postman. Para começar, clique no ícone de adição(+) junto à Coleção de Serviços de Comunicação:

Botão de adição do Postman.

Esta ação irá criar um novo separador para o nosso pedido no Postman. Com a criação, temos de configurá-la. Iremos fazer um pedido relativamente à API de Envio de SMS, por isso certifique-se de que consulta a documentação para esta API para obter assistência. Vamos configurar o pedido do Postman.

Comece por definir o tipo de pedido para POST e introduza {{endpoint}}/sms?api-version=2021-03-07 no campo URL do pedido. Este URL utiliza a nossa variável criada endpoint anteriormente para enviá-la automaticamente para o recurso dos Serviços de Comunicação.

Um pedido do Postman, com o tipo definido como POST e o URL definido corretamente.

Agora, selecione o separador Corpo do pedido e, em seguida, altere o botão de opção abaixo para "raw". À direita, existe uma lista pendente que diz "Texto", altere-a para JSON:

Definir o corpo do pedido como não processado e JSON

Esta ação irá configurar o pedido para enviar e receber informações num formato JSON.

Na área de texto abaixo, terá de introduzir um corpo do pedido, deve estar no seguinte formato:

{
    "from":"<Your Azure Communication Services Telephone Number>",
    "message":"<The message you'd like to send>",
    "smsRecipients": [
        {
            "to":"<The number you'd like to send the message to>"
        }
    ]
}

Para o valor "de", terá de obter um número de telefone no Portal do Azure Communication Services, conforme mencionado anteriormente. Introduza-o sem espaços e com o prefixo do seu código de país. Por exemplo: +15555551234. A sua "mensagem" pode ser o que pretende enviar, mas Hello from Azure Communication Services é um bom exemplo. O valor "para" deve ser um telemóvel ao qual tenha acesso que possa receber mensagens SMS. Utilizar o seu próprio telemóvel é uma boa ideia.

Depois de introduzido, temos de guardar este pedido na Coleção de Serviços de Comunicação que criámos anteriormente. Isto irá garantir que recolhe as variáveis e o script de pré-pedido que criámos anteriormente. Para tal, clique no botão "guardar" no canto superior direito da área de pedido.

O botão Guardar para um pedido do Postman.

Isto fará com que seja apresentada uma janela de caixa de diálogo que lhe pergunta, o que pretende chamar ao pedido e onde pretende guardá-lo. Pode atribuir-lhe o nome que quiser, mas certifique-se de que seleciona a sua coleção dos Serviços de Comunicação na metade inferior da caixa de diálogo:

A caixa de diálogo Guardar pedido do Postman com a coleção de Serviços de Comunicação selecionada.

Enviar um pedido

Agora que está tudo configurado, deve conseguir enviar o pedido e receber uma mensagem SMS no telemóvel. Para tal, certifique-se de que o pedido criado está selecionado e, em seguida, prima o botão "Enviar" à direita:

Um pedido do Postman, com o botão Enviar realçado.

Se tudo correu bem, deverá agora ver a resposta dos Serviços de Comunicação, que deverá ser o código de Estado 202:

Um pedido do Postman, enviado com êxito com um código de estado 202.

O Telemóvel, que detém o número que forneceu no valor "para", também deveria ter recebido uma mensagem SMS. Tem agora uma configuração funcional do Postman que pode falar com Azure Communication Services e enviar mensagens SMS.

Passos seguintes

Também poderá querer: