Samouczek: podpisywanie i tworzenie żądań za pomocą narzędzia Postman
W tym samouczku skonfigurujemy program Postman i użyjemy go do wykonania żądania względem Azure Communication Services przy użyciu protokołu HTTP. Po ukończeniu tego samouczka pomyślnie wysłano wiadomość SMS przy użyciu usług Communication Services i Postman. Następnie będzie można użyć narzędzia Postman do eksplorowania innych interfejsów API w ramach Azure Communication Services.
W tym samouczku wykonamy następujące elementy:
- Pobieranie narzędzia Postman
- Konfigurowanie narzędzia Postman do podpisywania żądań HTTP
- Wysłanie wiadomości w celu wysłania wiadomości w celu wysłania żądania względem interfejsu API wiadomości SMS usług Komunikacyjnych.
Wymagania wstępne
- Konto platformy Azure z aktywną subskrypcją. Aby uzyskać szczegółowe informacje, zobacz Tworzenie konta bezpłatnie. Bezpłatne konto zapewnia środki na korzystanie z platformy Azure w wysokości 200 USD, aby wypróbować dowolną kombinację usług.
- Aktywny zasób usług komunikacyjnych i parametry połączenia. Dowiedz się, jak utworzyć zasób usług komunikacyjnych.
- Azure Communication Services numer telefonu, który może wysyłać wiadomości SMS, zobacz nasz numer telefonu, aby go uzyskać.
Pobieranie i instalowanie narzędzia Postman
Postman to aplikacja klasyczna, która umożliwia wykonywanie żądań interfejsu API względem dowolnego interfejsu API HTTP. Jest on często używany do testowania i eksplorowania interfejsów API. Pobierzemy najnowszą wersję klasyczną z witryny internetowej Postmana. Aplikacja Postman ma wersje dla systemów Windows, Mac i Linux, więc pobierz wersję odpowiednią dla danego systemu operacyjnego. Po pobraniu otwórz aplikację. Zostanie wyświetlony ekran startowy z prośbą o zalogowanie się lub utworzenie konta narzędzia Postman. Tworzenie konta jest opcjonalne i można je pominąć, klikając link "Pomiń i przejdź do aplikacji". Utworzenie konta spowoduje zapisanie ustawień żądania interfejsu API w programie Postman, co umożliwia następnie odbieranie żądań na innych komputerach.
Po utworzeniu konta lub pominięciu tworzenia konta powinno zostać wyświetlone okno główne narzędzia Postman.
Tworzenie i konfigurowanie kolekcji Postman
Postman może organizować żądania na wiele sposobów. Na potrzeby tego samouczka. Utworzymy kolekcję Postman. W tym celu wybierz przycisk kolekcji po lewej stronie aplikacji:
Po wybraniu kliknij pozycję "Utwórz nową kolekcję", aby rozpocząć proces tworzenia kolekcji. Nowa karta zostanie otwarta w środkowym obszarze narzędzia Postman. Nadaj kolekcji nazwę dowolną. W tym miejscu kolekcja nosi nazwę "Azure Communication Services":
Po utworzeniu i nazwie kolekcji możesz ją skonfigurować.
Dodawanie zmiennych kolekcji
Aby obsłużyć uwierzytelnianie i ułatwić obsługę żądań, będziemy określać dwie zmienne kolekcji w nowo utworzonej kolekcji usługi Communication Services. Te zmienne są dostępne dla wszystkich żądań w kolekcji usług Komunikacyjnych. Aby rozpocząć tworzenie zmiennych, odwiedź kartę Zmiennej kolekcji.
Na karcie kolekcji utwórz dwie zmienne:
- key — ta zmienna powinna być jednym z kluczy ze strony klucza Azure Communication Services w Azure Portal. Na przykład
oW...A==
. - endpoint — ta zmienna powinna być punktem końcowym Azure Communication Services ze strony klucza.
Upewnij się, że usunięto ukośnik końcowy. Na przykład
https://contoso.communication.azure.com
.
Wprowadź te wartości w kolumnie "Wartość początkowa" ekranu zmiennych. Po wprowadzeniu naciśnij przycisk "Utrwali wszystko" tuż nad tabelą po prawej stronie. Po poprawnym skonfigurowaniu ekranu narzędzia Postman powinien wyglądać mniej więcej tak:
Więcej informacji na temat zmiennych można znaleźć w dokumentacji narzędzia Postman.
Tworzenie skryptu przed żądaniem
Następnym krokiem jest utworzenie skryptu wstępnego żądania w programie Postman. Skrypt przed żądaniem to skrypt uruchamiany przed każdym żądaniem w narzędziu Postman i może modyfikować lub zmieniać parametry żądania w Twoim imieniu. Użyjemy tego polecenia, aby podpisać nasze żądania HTTP, aby mogły być autoryzowane przez Azure Communication Services. Aby uzyskać więcej informacji na temat wymagań dotyczących podpisywania, zapoznaj się z naszym przewodnikiem dotyczącym uwierzytelniania.
Utworzymy ten skrypt w kolekcji, tak aby był uruchamiany na dowolnym żądaniu w kolekcji. Aby to zrobić, na karcie kolekcji kliknij kartę podrzędną "Skrypt przed żądaniem".
Na tej karcie podrzędnej możesz utworzyć skrypt wstępnego żądania, wprowadzając go do poniższego obszaru tekstowego. Łatwiej jest to napisać w pełnym edytorze kodu, takim jak Visual Studio Code przed wklejeniem go po zakończeniu. W tym samouczku przejdziemy przez każdą część skryptu. Możesz przejść do końca, jeśli chcesz po prostu skopiować go do narzędzia Postman i rozpocząć pracę. Zacznijmy pisać skrypt.
Pisanie skryptu przed żądaniem
Pierwszą rzeczą, którą będziemy robić, jest utworzenie ciągu uniwersalnego czasu koordynowanego (UTC) i dodanie go do nagłówka HTTP "Date". Przechowujemy również ten ciąg w zmiennej, aby użyć go później podczas podpisywania:
// Set the Date header to our Date as a UTC String.
const dateStr = new Date().toUTCString();
pm.request.headers.upsert({key:'Date', value: dateStr});
Następnie utworzymy skrót treści żądania przy użyciu algorytmu SHA 256 i umieścimy ją w nagłówku x-ms-content-sha256
. Narzędzie Postman zawiera niektóre standardowe biblioteki do tworzenia skrótów i podpisywania globalnie, więc nie musimy ich instalować ani wymagać ich:
// 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
});
Teraz użyjemy wcześniej określonej zmiennej punktu końcowego, aby rozpoznać wartość nagłówka hosta HTTP. Musimy to zrobić, ponieważ nagłówek hosta nie jest ustawiony do momentu przetworzenia tego skryptu:
// 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://','');
Po utworzeniu tych informacji możemy teraz utworzyć ciąg, który podpiszemy dla żądania HTTP, składa się z kilku wcześniej utworzonych wartości:
// 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;
Na koniec musimy podpisać ten ciąg przy użyciu klucza usług komunikacyjnych, a następnie dodać go do naszego żądania w nagłówku Authorization
:
// 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
});
Ostateczny skrypt przed żądaniem
Ostateczny skrypt przed żądaniem powinien wyglądać mniej więcej tak:
// 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
});
Wprowadź lub wklej ten końcowy skrypt w obszarze tekstowym na karcie Skrypt przed żądaniem:
Po wprowadzeniu naciśnij klawisze CTRL + S lub naciśnij przycisk zapisywania, który spowoduje zapisanie skryptu w kolekcji.
Tworzenie żądania w narzędziu Postman
Teraz, gdy wszystko jest skonfigurowane, możemy utworzyć żądanie usług komunikacyjnych w programie Postman. Aby rozpocząć, kliknij ikonę plus(+) obok kolekcji usług komunikacyjnych:
Spowoduje to utworzenie nowej karty dla naszego żądania w programie Postman. Po utworzeniu musimy go skonfigurować. Wyślemy żądanie do interfejsu API wysyłania wiadomości SMS, więc zapoznaj się z dokumentacją tego interfejsu API, aby uzyskać pomoc. Skonfigurujmy żądanie Narzędzia Postman.
Zacznij od ustawienia , typ żądania do POST
i wprowadzenie {{endpoint}}/sms?api-version=2021-03-07
do pola adresu URL żądania. Ten adres URL używa naszej wcześniej utworzonej endpoint
zmiennej do automatycznego wysyłania jej do zasobu usług Communication Services.
Teraz wybierz kartę Treść żądania, a następnie zmień przycisk radiowy poniżej na "raw". Po prawej stronie znajduje się lista rozwijana z napisem "Text", zmień ją na JSON:
Spowoduje to skonfigurowanie żądania wysyłania i odbierania informacji w formacie JSON.
W poniższym obszarze tekstowym musisz wprowadzić treść żądania, powinna być w następującym formacie:
{
"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>"
}
]
}
W przypadku wartości "od" musisz uzyskać numer telefonu w portalu Azure Communication Services, jak wspomniano wcześniej. Wprowadź go bez spacji i prefiksu według kodu kraju. Na przykład: +15555551234
. "Wiadomość" może być niezależnie od tego, co chcesz wysłać, ale Hello from Azure Communication Services
jest dobrym przykładem. Wartość "do" powinna być telefonem, do którego masz dostęp, który może odbierać wiadomości SMS. Korzystanie z własnych urządzeń przenośnych jest dobrym pomysłem.
Po wprowadzeniu musimy zapisać to żądanie w kolekcji usług komunikacyjnych, która została wcześniej utworzona. Zapewni to, że pobiera zmienne i skrypt przed żądaniem utworzony wcześniej. Aby to zrobić, kliknij przycisk "Zapisz" w prawym górnym rogu obszaru żądania.
Spowoduje to wyświetlenie okna dialogowego z pytaniem, co chcesz wywołać żądanie i gdzie chcesz go zapisać. Możesz nazwać wszystko, co chcesz, ale upewnij się, że w dolnej połowie okna dialogowego wybierzesz kolekcję Usług komunikacyjnych:
Wysyłanie żądania
Teraz, gdy wszystko jest skonfigurowane, powinno być możliwe wysłanie żądania i pobranie wiadomości SMS na telefonie. Aby to zrobić, upewnij się, że utworzono żądanie jest zaznaczone, a następnie naciśnij przycisk "Wyślij" po prawej stronie:
Jeśli wszystko poszło dobrze, powinna zostać wyświetlona odpowiedź z usługi Communication Services, która powinna mieć kod stanu 202:
Telefon komórkowy, który jest właścicielem numeru podanego w wartości "do", powinien również otrzymać wiadomość SMS. Masz teraz funkcjonalną konfigurację narzędzia Postman, która może komunikować się z Azure Communication Services i wysyłać wiadomości SMS.
Następne kroki
Zapoznaj się z interfejsami API Azure Communication ServicesDowiedz się więcej o uwierzytelnianiuDowiedz się więcej o usłudze Postman
Możesz również chcieć: