Weryfikacja odbiorcy: Przykłady kodów weryfikacyjnych email

Ptak

8 lip 2020

Email

1 min read

Weryfikacja odbiorcy: Przykłady kodów weryfikacyjnych email

Najważniejsze informacje

    • Weryfikacja oparta na danych, a nie na domysłach. Weryfikacja Odbiorców Bird’a (wcześniej SparkPost) wykorzystuje miliardy prawdziwych zdarzeń dostarczania i zaangażowania, aby określić, czy adres e-mail jest ważny, ryzykowny, niedostępny, czy zawiera literówkę.

    • Sprytniejsze niż sprawdzanie składni. W przeciwieństwie do tradycyjnych narzędzi opartych na regex, ten model wykorzystuje dane ze świata rzeczywistego do klasyfikacji dostarczalności i nawet sugeruje poprawki z funkcją „czy_chodziło_ci_o”.

    • Integracja w czasie rzeczywistym. Weryfikuj adresy e-mail bezpośrednio w formularzach rejestracyjnych, CRM-ach lub listach zbiorczych za pośrednictwem punktu końcowego API /recipient-validation/single/.

    • Przykłady z myślą o programistach. Działające fragmenty kodu są dostępne w wielu językach programowania — w tym Pythonie, Node.js, PHP, Go, C#, Ruby, Javie, Rust i innych — aby ułatwić integrację.

    • Najlepsze praktyki w zakresie bezpieczeństwa. Klucze API powinny zawsze być przechowywane po stronie serwera (nigdy nie eksponowane w kodzie po stronie klienta), używając zmiennych środowiskowych, takich jak SPARKPOST_API_KEY.

    • Poza weryfikacją. Połącz Weryfikację Odbiorców z konsumentami webhooków lub funkcjami Azure, aby stworzyć skalowalne, bezserwerowe procesy weryfikacji do użytku produkcyjnego.

    • Nieustanne doskonalenie. Programiści są zachęcani do dodawania przykładów w innych językach, aby zapewnić globalną dostępność w różnych ekosystemach.

Podsumowanie pytań i odpowiedzi

  • Czym jest walidacja odbiorcy?

    To jest system weryfikacji adresów e-mail oparty na API Bird, który klasyfikuje adresy jako ważne, ryzykowne, neutralne, niedostarczalne lub literówka, wykorzystując dane z miliardów rzeczywistych zdarzeń dostawy.

  • Jak to się różni od podstawowej walidacji składni?

    Tradycyjne walidatory sprawdzają tylko format; system Bird’a ocenia dane na żywo, takie jak wskaźniki odrzuceń, metryki zaangażowania i wzorce dostarczalności, aby podejmować bardziej inteligentne prognozy.

  • Jakiego rodzaju informacje zwraca API?

    Każda odpowiedź walidacyjna zawiera:

    • Klasyfikacja statusu (ważny, ryzykowny itp.)

    • Kod powodu (dlaczego adres został oznaczony)

    • Opcjonalna korekta „czy_może_chodziło_o” dla błędów typograficznych

    • Metadane, takie jak ceny, kraj i powody statusu

  • Czy mogę walidować e-maile hurtowo?

    Tak. Możesz przesyłać całe listy w aplikacji internetowej lub używać API do programowego walidowania pojedynczych adresów jako części swojego przepływu pracy.

  • Jakie języki programowania są obsługiwane?

    Przykłady kodu są dostępne w więcej niż tuzinie języków — w tym Python, Node.js, PHP, Go, C#, Java, Rust i Perl — obejmujące zarówno nowoczesne, jak i legacy systemy.

  • Gdzie powinienem przechowywać mój klucz API?

    Zawsze trzymaj to po stronie serwera, używając zmiennej środowiskowej, takiej jak SPARKPOST_API_KEY. Nigdy nie wstawiaj tego w skrypty po stronie klienta ani w kodzie przeglądarki.

  • Czy można to zintegrować z zautomatyzowanymi przepływami pracy?

    Absolutnie. Możesz użyć kreatora przepływów Flow Builder lub Azure Functions, aby walidować adresy w czasie rzeczywistym, zanim uruchomisz automatyzację dalszych procesów, takich jak e-maile potwierdzające czy aktualizacje w CRM.

  • Dlaczego firmy powinny dbać o dokładność walidacji?

    Wysokiej jakości walidacja poprawia reputację nadawcy, zapobiega odrzutom i zwiększa ROI kampanii, zapewniając, że każda wiadomość dociera do ważnej skrzynki odbiorczej.

  • Co dalej dla programistów?

    Bird zaprasza społeczność do wniesienia swoich wkładów w nowe przykłady językowe oraz ulepszanie istniejących, pomagając w rozszerzeniu dostępności walidacji na całym świecie.

Weryfikacja odbiorców SparkPost jest teraz dostępna zarówno dla obecnych klientów SparkPost, jak i dla nowych, niewysyłających klientów. Wykorzystuje potężną analizę opartą na danych, analizując codziennie miliardy zdarzeń związanych z odbiciem, dostarczeniem i zaangażowaniem, aby trenować nasz algorytm, oferując Ci jedno z najpotężniejszych narzędzi do weryfikacji e-maili opartych na danych na rynku, dzięki czemu możesz wysyłać e-maile mądrzej.

SparkPost Walidacja odbiorców jest teraz dostępna zarówno dla obecnych klientów SparkPost, jak i dla nowych, nieprzesyłających klientów. Wykorzystuje potężną analizy danych opartą na miliardach zdarzeń dotyczących odbić, dostarczania i zaangażowania, aby codziennie trenować nasz algorytm, dostarczając Ci jedno z najpotężniejszych narzędzi walidacji e-maili opartych na danych na rynku, dzięki czemu możesz wysyłać e-maile bardziej inteligentnie. To reprezentuje najnowszą ewolucję w technikach walidacji e-maili, wykraczającą poza proste sprawdzanie składni w kierunku zaawansowanych podejść opartych na danych, które zapewniają dokładniejsze wyniki.

Ten artykuł wyjaśnia, jak możesz maksymalnie wykorzystać dane, które otrzymasz w zwrocie na każdym zwalidowanym odbiorcy – zobaczysz, że klasyfikujemy adresy jako „ważne”, „ryzykowne”, „neutralne”, „nie dostarczalne” i „błąd”. Podajemy również kod „powód” oraz „did_you_mean” dla znanych błędów adresowych.

SparkPost Walidacja odbiorców jest teraz dostępna zarówno dla obecnych klientów SparkPost, jak i dla nowych, nieprzesyłających klientów. Wykorzystuje potężną analizy danych opartą na miliardach zdarzeń dotyczących odbić, dostarczania i zaangażowania, aby codziennie trenować nasz algorytm, dostarczając Ci jedno z najpotężniejszych narzędzi walidacji e-maili opartych na danych na rynku, dzięki czemu możesz wysyłać e-maile bardziej inteligentnie. To reprezentuje najnowszą ewolucję w technikach walidacji e-maili, wykraczającą poza proste sprawdzanie składni w kierunku zaawansowanych podejść opartych na danych, które zapewniają dokładniejsze wyniki.

Ten artykuł wyjaśnia, jak możesz maksymalnie wykorzystać dane, które otrzymasz w zwrocie na każdym zwalidowanym odbiorcy – zobaczysz, że klasyfikujemy adresy jako „ważne”, „ryzykowne”, „neutralne”, „nie dostarczalne” i „błąd”. Podajemy również kod „powód” oraz „did_you_mean” dla znanych błędów adresowych.

SparkPost Walidacja odbiorców jest teraz dostępna zarówno dla obecnych klientów SparkPost, jak i dla nowych, nieprzesyłających klientów. Wykorzystuje potężną analizy danych opartą na miliardach zdarzeń dotyczących odbić, dostarczania i zaangażowania, aby codziennie trenować nasz algorytm, dostarczając Ci jedno z najpotężniejszych narzędzi walidacji e-maili opartych na danych na rynku, dzięki czemu możesz wysyłać e-maile bardziej inteligentnie. To reprezentuje najnowszą ewolucję w technikach walidacji e-maili, wykraczającą poza proste sprawdzanie składni w kierunku zaawansowanych podejść opartych na danych, które zapewniają dokładniejsze wyniki.

Ten artykuł wyjaśnia, jak możesz maksymalnie wykorzystać dane, które otrzymasz w zwrocie na każdym zwalidowanym odbiorcy – zobaczysz, że klasyfikujemy adresy jako „ważne”, „ryzykowne”, „neutralne”, „nie dostarczalne” i „błąd”. Podajemy również kod „powód” oraz „did_you_mean” dla znanych błędów adresowych.

C#

Nie jestem tak zaznajomiony z C# – według mnie wygląda to bardziej jak Java, a nie jak C. Udało mi się to złożyć, śledząc przykłady pokazane w bibliotece żądań System.Net.Http.

Postman może automatycznie generować przykładowy kod używając RestSharp, jeśli to preferujesz.

Nie jestem tak zaznajomiony z C# – według mnie wygląda to bardziej jak Java, a nie jak C. Udało mi się to złożyć, śledząc przykłady pokazane w bibliotece żądań System.Net.Http.

Postman może automatycznie generować przykładowy kod używając RestSharp, jeśli to preferujesz.

Nie jestem tak zaznajomiony z C# – według mnie wygląda to bardziej jak Java, a nie jak C. Udało mi się to złożyć, śledząc przykłady pokazane w bibliotece żądań System.Net.Http.

Postman może automatycznie generować przykładowy kod używając RestSharp, jeśli to preferujesz.

Żądania API

W aplikacji internetowej SparkPost możesz przeciągnąć i upuścić całą listę do walidacji. Możesz także użyć interfejsu API, aby walidować pojedyncze adresy, dzięki czemu możesz wbudować walidację bezpośrednio w swój workflow wprowadzania adresów.

Jakiś czas temu wymyśliliśmy narzędzie wiersza poleceń w Pythonie wykorzystujące ten interfejs API. Dyskutowaliśmy, co powinniśmy zrobić dla innych języków - i oto jesteśmy! Zaczynajmy.

Ten folder repozytorium Github zawiera działające przykłady wywołań API walidacji odbiorców w około tuzinie różnych języków. Staramy się pokryć najpopularniejsze stosowane języki.

Typowy sposób pracy z tymi przykładami to:

  • Pobierz swój klucz z zmiennej środowiskowej SPARKPOST_API_KEY

  • Wykonaj wywołanie API do /api/v1/recipient-validation/single/, aby zwalidować odbiorcę

  • Odbierz odpowiedź w postaci łańcucha, zawierającą dane w formacie JSON z wynikiem

  • Wydrukuj wynik


Język

Używana biblioteka HTTP

Gdzie odbywa się walidacja

Znaczące rozważania

Bash / Curl

curl CLI

Użycie tylko w terminalu

Brak parsowania odpowiedzi JSON

PHP

curl_setopt

Po stronie serwera

Wiele opcji bibliotecznych dostępnych

Python

requests

Skrypty lub aplikacje backendowe

Automatyczna konwersja JSON na słownik

Node.js

axios (zalecane)

Tylko po stronie serwera

Unikaj ujawniania kluczy API po stronie klienta

Go

net/http + encoding/json

Usługi backendowe

Silne bezpieczeństwo typów z własnymi strukturami

C#

System.Net.Http

Aplikacje serwerowe

Postman może wygenerować wersję RestSharp

Java

HttpURLConnection

Usługi serwerowe

Obszerne, ale szeroko wdrażalne

C / C++

libcurl + OpenSSL

Narzędzia na poziomie systemu

Wymagana ręczna dbałość o bezpieczeństwo pamięci

Lua

luasocket + luasec

Towarzyszące skrypty

Może efektywnie przesyłać odpowiedzi w kawałkach

Perl

LWP::UserAgent

Systemy starsze

Pozwalanie na opcjonalne parsowanie JSON

VB.net

Visual Studio SDK

Aplikacje konsolowe Windows

Wymagana konfiguracja zmiennej środowiskowej

Rust

reqwest + tokio async

Nowoczesne usługi internetowe

Async potrzebny do obsługi nagłówków

SparkPost ma biblioteki dla niektórych, ale nie dla wszystkich języków pokrytych tutaj. Zdecydowaliśmy się napisać te przykłady w „native”, aby a) pokryć więcej języków, b) pokazać, jak prosty może być ogólny kod i c) umożliwić ci wyraźne zauważenie podobieństw i różnic między językami.

W aplikacji internetowej SparkPost możesz przeciągnąć i upuścić całą listę do walidacji. Możesz także użyć interfejsu API, aby walidować pojedyncze adresy, dzięki czemu możesz wbudować walidację bezpośrednio w swój workflow wprowadzania adresów.

Jakiś czas temu wymyśliliśmy narzędzie wiersza poleceń w Pythonie wykorzystujące ten interfejs API. Dyskutowaliśmy, co powinniśmy zrobić dla innych języków - i oto jesteśmy! Zaczynajmy.

Ten folder repozytorium Github zawiera działające przykłady wywołań API walidacji odbiorców w około tuzinie różnych języków. Staramy się pokryć najpopularniejsze stosowane języki.

Typowy sposób pracy z tymi przykładami to:

  • Pobierz swój klucz z zmiennej środowiskowej SPARKPOST_API_KEY

  • Wykonaj wywołanie API do /api/v1/recipient-validation/single/, aby zwalidować odbiorcę

  • Odbierz odpowiedź w postaci łańcucha, zawierającą dane w formacie JSON z wynikiem

  • Wydrukuj wynik


Język

Używana biblioteka HTTP

Gdzie odbywa się walidacja

Znaczące rozważania

Bash / Curl

curl CLI

Użycie tylko w terminalu

Brak parsowania odpowiedzi JSON

PHP

curl_setopt

Po stronie serwera

Wiele opcji bibliotecznych dostępnych

Python

requests

Skrypty lub aplikacje backendowe

Automatyczna konwersja JSON na słownik

Node.js

axios (zalecane)

Tylko po stronie serwera

Unikaj ujawniania kluczy API po stronie klienta

Go

net/http + encoding/json

Usługi backendowe

Silne bezpieczeństwo typów z własnymi strukturami

C#

System.Net.Http

Aplikacje serwerowe

Postman może wygenerować wersję RestSharp

Java

HttpURLConnection

Usługi serwerowe

Obszerne, ale szeroko wdrażalne

C / C++

libcurl + OpenSSL

Narzędzia na poziomie systemu

Wymagana ręczna dbałość o bezpieczeństwo pamięci

Lua

luasocket + luasec

Towarzyszące skrypty

Może efektywnie przesyłać odpowiedzi w kawałkach

Perl

LWP::UserAgent

Systemy starsze

Pozwalanie na opcjonalne parsowanie JSON

VB.net

Visual Studio SDK

Aplikacje konsolowe Windows

Wymagana konfiguracja zmiennej środowiskowej

Rust

reqwest + tokio async

Nowoczesne usługi internetowe

Async potrzebny do obsługi nagłówków

SparkPost ma biblioteki dla niektórych, ale nie dla wszystkich języków pokrytych tutaj. Zdecydowaliśmy się napisać te przykłady w „native”, aby a) pokryć więcej języków, b) pokazać, jak prosty może być ogólny kod i c) umożliwić ci wyraźne zauważenie podobieństw i różnic między językami.

W aplikacji internetowej SparkPost możesz przeciągnąć i upuścić całą listę do walidacji. Możesz także użyć interfejsu API, aby walidować pojedyncze adresy, dzięki czemu możesz wbudować walidację bezpośrednio w swój workflow wprowadzania adresów.

Jakiś czas temu wymyśliliśmy narzędzie wiersza poleceń w Pythonie wykorzystujące ten interfejs API. Dyskutowaliśmy, co powinniśmy zrobić dla innych języków - i oto jesteśmy! Zaczynajmy.

Ten folder repozytorium Github zawiera działające przykłady wywołań API walidacji odbiorców w około tuzinie różnych języków. Staramy się pokryć najpopularniejsze stosowane języki.

Typowy sposób pracy z tymi przykładami to:

  • Pobierz swój klucz z zmiennej środowiskowej SPARKPOST_API_KEY

  • Wykonaj wywołanie API do /api/v1/recipient-validation/single/, aby zwalidować odbiorcę

  • Odbierz odpowiedź w postaci łańcucha, zawierającą dane w formacie JSON z wynikiem

  • Wydrukuj wynik


Język

Używana biblioteka HTTP

Gdzie odbywa się walidacja

Znaczące rozważania

Bash / Curl

curl CLI

Użycie tylko w terminalu

Brak parsowania odpowiedzi JSON

PHP

curl_setopt

Po stronie serwera

Wiele opcji bibliotecznych dostępnych

Python

requests

Skrypty lub aplikacje backendowe

Automatyczna konwersja JSON na słownik

Node.js

axios (zalecane)

Tylko po stronie serwera

Unikaj ujawniania kluczy API po stronie klienta

Go

net/http + encoding/json

Usługi backendowe

Silne bezpieczeństwo typów z własnymi strukturami

C#

System.Net.Http

Aplikacje serwerowe

Postman może wygenerować wersję RestSharp

Java

HttpURLConnection

Usługi serwerowe

Obszerne, ale szeroko wdrażalne

C / C++

libcurl + OpenSSL

Narzędzia na poziomie systemu

Wymagana ręczna dbałość o bezpieczeństwo pamięci

Lua

luasocket + luasec

Towarzyszące skrypty

Może efektywnie przesyłać odpowiedzi w kawałkach

Perl

LWP::UserAgent

Systemy starsze

Pozwalanie na opcjonalne parsowanie JSON

VB.net

Visual Studio SDK

Aplikacje konsolowe Windows

Wymagana konfiguracja zmiennej środowiskowej

Rust

reqwest + tokio async

Nowoczesne usługi internetowe

Async potrzebny do obsługi nagłówków

SparkPost ma biblioteki dla niektórych, ale nie dla wszystkich języków pokrytych tutaj. Zdecydowaliśmy się napisać te przykłady w „native”, aby a) pokryć więcej języków, b) pokazać, jak prosty może być ogólny kod i c) umożliwić ci wyraźne zauważenie podobieństw i różnic między językami.

Bash / Curl

To jest najkrótszy kod, który zdobywa nagrodę – po prostu używa narzędzia wiersza poleceń „curl”, aby złożyć zapytanie i bezpośrednio wydrukować odpowiedź w terminalu. Możesz zobaczyć, że wynik to ciąg zawierający JSON; w rzeczywistości nie analizujemy poszczególnych atrybutów wyniku.

To jest najkrótszy kod, który zdobywa nagrodę – po prostu używa narzędzia wiersza poleceń „curl”, aby złożyć zapytanie i bezpośrednio wydrukować odpowiedź w terminalu. Możesz zobaczyć, że wynik to ciąg zawierający JSON; w rzeczywistości nie analizujemy poszczególnych atrybutów wyniku.

To jest najkrótszy kod, który zdobywa nagrodę – po prostu używa narzędzia wiersza poleceń „curl”, aby złożyć zapytanie i bezpośrednio wydrukować odpowiedź w terminalu. Możesz zobaczyć, że wynik to ciąg zawierający JSON; w rzeczywistości nie analizujemy poszczególnych atrybutów wyniku.

PHP

Zaufany PHP ma kilka różnych sposobów na wykonywanie połączeń API HTTPS. Tutaj zdecydowaliśmy się użyć curl_setopt razem z curl_exec.

Jeśli wolisz HTTP_Request2 lub pecl_http, to Postman ma wbudowany generator kodu, którego możesz użyć do stworzenia podobnych przykładów – po prostu skonfiguruj działające żądanie GET i użyj przycisku „Kod”.

Postman interface used for API testing, featuring a "Single Address Validation" endpoint with GET parameters, a Headers section showing Authorization and Accept keys, and a highlighted area labeled "Cookies" and "Code" on the right side.

Zaufany PHP ma kilka różnych sposobów na wykonywanie połączeń API HTTPS. Tutaj zdecydowaliśmy się użyć curl_setopt razem z curl_exec.

Jeśli wolisz HTTP_Request2 lub pecl_http, to Postman ma wbudowany generator kodu, którego możesz użyć do stworzenia podobnych przykładów – po prostu skonfiguruj działające żądanie GET i użyj przycisku „Kod”.

Postman interface used for API testing, featuring a "Single Address Validation" endpoint with GET parameters, a Headers section showing Authorization and Accept keys, and a highlighted area labeled "Cookies" and "Code" on the right side.

Zaufany PHP ma kilka różnych sposobów na wykonywanie połączeń API HTTPS. Tutaj zdecydowaliśmy się użyć curl_setopt razem z curl_exec.

Jeśli wolisz HTTP_Request2 lub pecl_http, to Postman ma wbudowany generator kodu, którego możesz użyć do stworzenia podobnych przykładów – po prostu skonfiguruj działające żądanie GET i użyj przycisku „Kod”.

Postman interface used for API testing, featuring a "Single Address Validation" endpoint with GET parameters, a Headers section showing Authorization and Accept keys, and a highlighted area labeled "Cookies" and "Code" on the right side.

Python

To używa popularnego requests modułu, który jest na wysokim poziomie i dlatego łatwy w użyciu. Ten przykład sprawdza zwrócony kod statusu, konwertuje wyniki JSON z powrotem na obiekt słownika Pythona i drukuje wynikający obiekt zamiast tylko ciągu tekstowego.

Jeśli wolisz wbudowaną bibliotekę http.client, Postman może wygenerować kod także dla niej; nie zajmuje to wiele więcej czasu.

To używa popularnego requests modułu, który jest na wysokim poziomie i dlatego łatwy w użyciu. Ten przykład sprawdza zwrócony kod statusu, konwertuje wyniki JSON z powrotem na obiekt słownika Pythona i drukuje wynikający obiekt zamiast tylko ciągu tekstowego.

Jeśli wolisz wbudowaną bibliotekę http.client, Postman może wygenerować kod także dla niej; nie zajmuje to wiele więcej czasu.

To używa popularnego requests modułu, który jest na wysokim poziomie i dlatego łatwy w użyciu. Ten przykład sprawdza zwrócony kod statusu, konwertuje wyniki JSON z powrotem na obiekt słownika Pythona i drukuje wynikający obiekt zamiast tylko ciągu tekstowego.

Jeśli wolisz wbudowaną bibliotekę http.client, Postman może wygenerować kod także dla niej; nie zajmuje to wiele więcej czasu.

Node.js

Istnieje wiele różnych bibliotek HTTP(S) node.js. Zacząłem od starszego pakietu request (używając funkcji zwrotnej), ale jest on przestarzały i już nie jest aktywnie utrzymywany.  Wybrałem nowszy pakiet axios (używając obietnic). 

Postman może również dostarczyć ci przykład natywny w Javie oraz Unirest, na wypadek, gdybyś wolał te rozwiązania.

Ponieważ ten kod potrzebuje dostępu do twojego klucza API, zdecydowanie zalecamy wywoływanie naszego API z twojej strony serwera, nigdy z strony klienta (przeglądarki / urządzenia mobilnego).

Istnieje wiele różnych bibliotek HTTP(S) node.js. Zacząłem od starszego pakietu request (używając funkcji zwrotnej), ale jest on przestarzały i już nie jest aktywnie utrzymywany.  Wybrałem nowszy pakiet axios (używając obietnic). 

Postman może również dostarczyć ci przykład natywny w Javie oraz Unirest, na wypadek, gdybyś wolał te rozwiązania.

Ponieważ ten kod potrzebuje dostępu do twojego klucza API, zdecydowanie zalecamy wywoływanie naszego API z twojej strony serwera, nigdy z strony klienta (przeglądarki / urządzenia mobilnego).

Istnieje wiele różnych bibliotek HTTP(S) node.js. Zacząłem od starszego pakietu request (używając funkcji zwrotnej), ale jest on przestarzały i już nie jest aktywnie utrzymywany.  Wybrałem nowszy pakiet axios (używając obietnic). 

Postman może również dostarczyć ci przykład natywny w Javie oraz Unirest, na wypadek, gdybyś wolał te rozwiązania.

Ponieważ ten kod potrzebuje dostępu do twojego klucza API, zdecydowanie zalecamy wywoływanie naszego API z twojej strony serwera, nigdy z strony klienta (przeglądarki / urządzenia mobilnego).

Idź

Go dąży do filozofii „jednego dobrego sposobu” na zrobienie czegoś; w tym przypadku, używając wbudowanych bibliotek „baterie w zestawie” net/http, encoding/json i innych.

Długość wynika głównie z jawnych klauzul sprawdzania błędów if err != nil {} wszędzie (brak wyjątków LOL).

Ogłaszamy również strukturę obiektu wynikowego z tagami pól, aby umożliwić nam „odczytanie” zwróconego ciągu JSON. Nakładamy tagi „wyniki” i „błędy”, aby umożliwić oba rodzaje zwrotu.

Podoba mi się szybkość, bezpieczeństwo typów i klarowność Go, nawet jeśli kod jest dłuższy niż nasze wcześniejsze przykłady.

Go dąży do filozofii „jednego dobrego sposobu” na zrobienie czegoś; w tym przypadku, używając wbudowanych bibliotek „baterie w zestawie” net/http, encoding/json i innych.

Długość wynika głównie z jawnych klauzul sprawdzania błędów if err != nil {} wszędzie (brak wyjątków LOL).

Ogłaszamy również strukturę obiektu wynikowego z tagami pól, aby umożliwić nam „odczytanie” zwróconego ciągu JSON. Nakładamy tagi „wyniki” i „błędy”, aby umożliwić oba rodzaje zwrotu.

Podoba mi się szybkość, bezpieczeństwo typów i klarowność Go, nawet jeśli kod jest dłuższy niż nasze wcześniejsze przykłady.

Go dąży do filozofii „jednego dobrego sposobu” na zrobienie czegoś; w tym przypadku, używając wbudowanych bibliotek „baterie w zestawie” net/http, encoding/json i innych.

Długość wynika głównie z jawnych klauzul sprawdzania błędów if err != nil {} wszędzie (brak wyjątków LOL).

Ogłaszamy również strukturę obiektu wynikowego z tagami pól, aby umożliwić nam „odczytanie” zwróconego ciągu JSON. Nakładamy tagi „wyniki” i „błędy”, aby umożliwić oba rodzaje zwrotu.

Podoba mi się szybkość, bezpieczeństwo typów i klarowność Go, nawet jeśli kod jest dłuższy niż nasze wcześniejsze przykłady.

Java

Nigdy wcześniej nie pisałem żadnego poważnego kodu w Javie, ale łatwo było to złożyć, śledząc ogólne podejście używane w bibliotece SparkPost dla innych wywołań GET.

Przy okazji, używanie VS Code jako mojego edytora / debuggera działało naprawdę dobrze dla wszystkich języków tutaj, zapewniając mi podświetlanie składni, krokowanie debuggera / przeglądanie zmiennych itd. The InputStreamReader i BufferedReader są podobne do (i zakładam, że zostały skopiowane przez) Go.

Nigdy wcześniej nie pisałem żadnego poważnego kodu w Javie, ale łatwo było to złożyć, śledząc ogólne podejście używane w bibliotece SparkPost dla innych wywołań GET.

Przy okazji, używanie VS Code jako mojego edytora / debuggera działało naprawdę dobrze dla wszystkich języków tutaj, zapewniając mi podświetlanie składni, krokowanie debuggera / przeglądanie zmiennych itd. The InputStreamReader i BufferedReader są podobne do (i zakładam, że zostały skopiowane przez) Go.

Nigdy wcześniej nie pisałem żadnego poważnego kodu w Javie, ale łatwo było to złożyć, śledząc ogólne podejście używane w bibliotece SparkPost dla innych wywołań GET.

Przy okazji, używanie VS Code jako mojego edytora / debuggera działało naprawdę dobrze dla wszystkich języków tutaj, zapewniając mi podświetlanie składni, krokowanie debuggera / przeglądanie zmiennych itd. The InputStreamReader i BufferedReader są podobne do (i zakładam, że zostały skopiowane przez) Go.

C / C++

To była podróż wzdłuż ścieżki wspomnień, ponieważ w latach 90-tych napisałem dużo kodu w C, z którego część nadal działa głęboko w sieciach telekomunikacyjnych gdzieś. Ponieważ historia C wyprzedza nowoczesny Internet, nie jest zaskakujące, że wsparcie dla bibliotek jest zadaniem ręcznym. Musimy pobrać (i skompilować) niedawną wersję Libcurl, łącząc ją z biblioteką OpenSSL – patrz README po rzeczywiste kroki.

To wydaje się być dużą pracą w porównaniu do nowoczesnych języków, szczególnie gdy Go (lub Lua, lub Python, lub jakikolwiek z innych) jest wystarczająco szybki do takich zadań.

Inną rzeczą, którą zapomniałem, mimo że noszę blizny po poprzednich bitwach, jest przerażenie związane z alokacją pamięci! Aby uprościć przykład, zarezerwowałem długość ciągu URL na 1024 znaki i sprawdziłem długość adresu e-mail (używając strlen) zanim połączymy w niego (używając strcat).

Traktujemy ciąg autoryzacji z połączonym kluczem API w ten sam sposób... choć wiemy, że ważny klucz API nigdy nie będzie zbyt długi... to nie jest ochrona! Dane wejściowe od użytkownika pochodzące z zmiennej środowiskowej mogą być czymkolwiek. Musisz programować defensywnie.

Bardziej zaawansowany programista mógłby użyć malloc zamiast alokacji zmiennych ze stosu i obliczyć, jak długo muszą być połączone ciągi. Myślenie o tej dodatkowej złożoności sprawiło, że poczułem ból w diodach po lewej stronie; przypomniało mi o ryzykach, jakie programiści C napotykają każdego dnia, starając się unikać nadmiernych przepełnień buforów i nieprzewidywanych efektów ubocznych. Co prowadzi nas do...

To była podróż wzdłuż ścieżki wspomnień, ponieważ w latach 90-tych napisałem dużo kodu w C, z którego część nadal działa głęboko w sieciach telekomunikacyjnych gdzieś. Ponieważ historia C wyprzedza nowoczesny Internet, nie jest zaskakujące, że wsparcie dla bibliotek jest zadaniem ręcznym. Musimy pobrać (i skompilować) niedawną wersję Libcurl, łącząc ją z biblioteką OpenSSL – patrz README po rzeczywiste kroki.

To wydaje się być dużą pracą w porównaniu do nowoczesnych języków, szczególnie gdy Go (lub Lua, lub Python, lub jakikolwiek z innych) jest wystarczająco szybki do takich zadań.

Inną rzeczą, którą zapomniałem, mimo że noszę blizny po poprzednich bitwach, jest przerażenie związane z alokacją pamięci! Aby uprościć przykład, zarezerwowałem długość ciągu URL na 1024 znaki i sprawdziłem długość adresu e-mail (używając strlen) zanim połączymy w niego (używając strcat).

Traktujemy ciąg autoryzacji z połączonym kluczem API w ten sam sposób... choć wiemy, że ważny klucz API nigdy nie będzie zbyt długi... to nie jest ochrona! Dane wejściowe od użytkownika pochodzące z zmiennej środowiskowej mogą być czymkolwiek. Musisz programować defensywnie.

Bardziej zaawansowany programista mógłby użyć malloc zamiast alokacji zmiennych ze stosu i obliczyć, jak długo muszą być połączone ciągi. Myślenie o tej dodatkowej złożoności sprawiło, że poczułem ból w diodach po lewej stronie; przypomniało mi o ryzykach, jakie programiści C napotykają każdego dnia, starając się unikać nadmiernych przepełnień buforów i nieprzewidywanych efektów ubocznych. Co prowadzi nas do...

To była podróż wzdłuż ścieżki wspomnień, ponieważ w latach 90-tych napisałem dużo kodu w C, z którego część nadal działa głęboko w sieciach telekomunikacyjnych gdzieś. Ponieważ historia C wyprzedza nowoczesny Internet, nie jest zaskakujące, że wsparcie dla bibliotek jest zadaniem ręcznym. Musimy pobrać (i skompilować) niedawną wersję Libcurl, łącząc ją z biblioteką OpenSSL – patrz README po rzeczywiste kroki.

To wydaje się być dużą pracą w porównaniu do nowoczesnych języków, szczególnie gdy Go (lub Lua, lub Python, lub jakikolwiek z innych) jest wystarczająco szybki do takich zadań.

Inną rzeczą, którą zapomniałem, mimo że noszę blizny po poprzednich bitwach, jest przerażenie związane z alokacją pamięci! Aby uprościć przykład, zarezerwowałem długość ciągu URL na 1024 znaki i sprawdziłem długość adresu e-mail (używając strlen) zanim połączymy w niego (używając strcat).

Traktujemy ciąg autoryzacji z połączonym kluczem API w ten sam sposób... choć wiemy, że ważny klucz API nigdy nie będzie zbyt długi... to nie jest ochrona! Dane wejściowe od użytkownika pochodzące z zmiennej środowiskowej mogą być czymkolwiek. Musisz programować defensywnie.

Bardziej zaawansowany programista mógłby użyć malloc zamiast alokacji zmiennych ze stosu i obliczyć, jak długo muszą być połączone ciągi. Myślenie o tej dodatkowej złożoności sprawiło, że poczułem ból w diodach po lewej stronie; przypomniało mi o ryzykach, jakie programiści C napotykają każdego dnia, starając się unikać nadmiernych przepełnień buforów i nieprzewidywanych efektów ubocznych. Co prowadzi nas do...

Lua

Lua jest znany z łatwej koegzystencji obok zbioru kodu C, a tutaj w SparkPost, używaliśmy Lua w dużym zakresie do dostosowywania polityki w naszym lokalnym MTA Momentum. Możesz go również używać jako samodzielnego języka skryptowego, a to też jest całkiem przyjemne.

Z Lua 5.3 i menedżerem pakietów luarocks, używamy bibliotek luasocket i luasec. Pokazując swoje dziedzictwo integracji z C, łączymy się z naszym lokalnym biblioteką OpenSSL. Proces instalacji luarocks wywołuje kompilator gcc (lub inny kompilator C, którego używasz), więc dodawanie nowych bibliotek zabiera trochę czasu.

Kod Lua jest dość prosty. Znaki — oznaczają komentarze. Funkcja https.request zapewnia wiele wartości zwracanych (trochę jak w Pythonie i Go). Konkatenacja łańcuchów odbywa się za pomocą operatora  .. (zamiast + w Pythonie).

Ciało odpowiedzi z tego wywołania jest obsługiwane za pomocą modułu ‘ltn12’ – zobacz stronę wiki Lua o filtrach, źródłach i odpływach. Umożliwia to wydajne przetwarzanie danych, które mogą być zwracane w wielu “częściach”. Jak wyjaśnia ten artykuł:

Fabryka tabeli tworzy odpływ, który przechowuje wszystkie uzyskane dane w tabeli. Dane mogą później być efektywnie konkatenowane do jednego łańcucha za pomocą funkcji biblioteki table.concat.

Naszym przykładem jest po prostu konkatenacja tabeli t i wydrukowanie jej; można by użyć filtra do przeprowadzenia dalszego przetwarzania.

Lua jest znany z łatwej koegzystencji obok zbioru kodu C, a tutaj w SparkPost, używaliśmy Lua w dużym zakresie do dostosowywania polityki w naszym lokalnym MTA Momentum. Możesz go również używać jako samodzielnego języka skryptowego, a to też jest całkiem przyjemne.

Z Lua 5.3 i menedżerem pakietów luarocks, używamy bibliotek luasocket i luasec. Pokazując swoje dziedzictwo integracji z C, łączymy się z naszym lokalnym biblioteką OpenSSL. Proces instalacji luarocks wywołuje kompilator gcc (lub inny kompilator C, którego używasz), więc dodawanie nowych bibliotek zabiera trochę czasu.

Kod Lua jest dość prosty. Znaki — oznaczają komentarze. Funkcja https.request zapewnia wiele wartości zwracanych (trochę jak w Pythonie i Go). Konkatenacja łańcuchów odbywa się za pomocą operatora  .. (zamiast + w Pythonie).

Ciało odpowiedzi z tego wywołania jest obsługiwane za pomocą modułu ‘ltn12’ – zobacz stronę wiki Lua o filtrach, źródłach i odpływach. Umożliwia to wydajne przetwarzanie danych, które mogą być zwracane w wielu “częściach”. Jak wyjaśnia ten artykuł:

Fabryka tabeli tworzy odpływ, który przechowuje wszystkie uzyskane dane w tabeli. Dane mogą później być efektywnie konkatenowane do jednego łańcucha za pomocą funkcji biblioteki table.concat.

Naszym przykładem jest po prostu konkatenacja tabeli t i wydrukowanie jej; można by użyć filtra do przeprowadzenia dalszego przetwarzania.

Lua jest znany z łatwej koegzystencji obok zbioru kodu C, a tutaj w SparkPost, używaliśmy Lua w dużym zakresie do dostosowywania polityki w naszym lokalnym MTA Momentum. Możesz go również używać jako samodzielnego języka skryptowego, a to też jest całkiem przyjemne.

Z Lua 5.3 i menedżerem pakietów luarocks, używamy bibliotek luasocket i luasec. Pokazując swoje dziedzictwo integracji z C, łączymy się z naszym lokalnym biblioteką OpenSSL. Proces instalacji luarocks wywołuje kompilator gcc (lub inny kompilator C, którego używasz), więc dodawanie nowych bibliotek zabiera trochę czasu.

Kod Lua jest dość prosty. Znaki — oznaczają komentarze. Funkcja https.request zapewnia wiele wartości zwracanych (trochę jak w Pythonie i Go). Konkatenacja łańcuchów odbywa się za pomocą operatora  .. (zamiast + w Pythonie).

Ciało odpowiedzi z tego wywołania jest obsługiwane za pomocą modułu ‘ltn12’ – zobacz stronę wiki Lua o filtrach, źródłach i odpływach. Umożliwia to wydajne przetwarzanie danych, które mogą być zwracane w wielu “częściach”. Jak wyjaśnia ten artykuł:

Fabryka tabeli tworzy odpływ, który przechowuje wszystkie uzyskane dane w tabeli. Dane mogą później być efektywnie konkatenowane do jednego łańcucha za pomocą funkcji biblioteki table.concat.

Naszym przykładem jest po prostu konkatenacja tabeli t i wydrukowanie jej; można by użyć filtra do przeprowadzenia dalszego przetwarzania.

Perl

Podczas gdy Perl jest znany z jednolinijkowych skryptów, to nie jest jeden z nich.  Perl został zaprojektowany do bardzo szybkiego przeszukiwania i modyfikacji dokumentów, ale w rzeczywistości jest w stanie zrobić o wiele więcej.  Kiedyś napisałem cały zestaw do zarządzania stanem w Perlu.  Co za przypadek.   W każdym razie…

Ten skrypt korzysta z LWP::UserAgent i HTTP::Request oraz opcjonalnie z pakietów JSON i Data::Dumper, w zależności od tego, jak chcesz zobaczyć wyjście. Jak w przypadku wszystkich innych skryptów na tej stronie, powinieneś wcześniej ustawić zmienną środowiskową SPARKPOST_API_KEY na swój wygenerowany klucz API, który zawiera funkcję walidacji odbiorcy. Ten skrypt twardo ustawia $recipient = ‘test@gmail.com’, ale możesz łatwo dodać wejście z wiersza poleceń lub pobrać z pliku.

Po wypełnieniu wszystkich zmiennych, ładujemy HTTP:Request z parametrami GET i wysyłamy go do LWP:UserAgent.  Wynikowa „wiadomość” to rezultat testu walidacji e-mail jako tablica.  Możesz użyć JSON i DUMPER, aby wyświetlić wynik lub po prostu przekazać tablicę do dalszego przetwarzania.

Podczas gdy Perl jest znany z jednolinijkowych skryptów, to nie jest jeden z nich.  Perl został zaprojektowany do bardzo szybkiego przeszukiwania i modyfikacji dokumentów, ale w rzeczywistości jest w stanie zrobić o wiele więcej.  Kiedyś napisałem cały zestaw do zarządzania stanem w Perlu.  Co za przypadek.   W każdym razie…

Ten skrypt korzysta z LWP::UserAgent i HTTP::Request oraz opcjonalnie z pakietów JSON i Data::Dumper, w zależności od tego, jak chcesz zobaczyć wyjście. Jak w przypadku wszystkich innych skryptów na tej stronie, powinieneś wcześniej ustawić zmienną środowiskową SPARKPOST_API_KEY na swój wygenerowany klucz API, który zawiera funkcję walidacji odbiorcy. Ten skrypt twardo ustawia $recipient = ‘test@gmail.com’, ale możesz łatwo dodać wejście z wiersza poleceń lub pobrać z pliku.

Po wypełnieniu wszystkich zmiennych, ładujemy HTTP:Request z parametrami GET i wysyłamy go do LWP:UserAgent.  Wynikowa „wiadomość” to rezultat testu walidacji e-mail jako tablica.  Możesz użyć JSON i DUMPER, aby wyświetlić wynik lub po prostu przekazać tablicę do dalszego przetwarzania.

Podczas gdy Perl jest znany z jednolinijkowych skryptów, to nie jest jeden z nich.  Perl został zaprojektowany do bardzo szybkiego przeszukiwania i modyfikacji dokumentów, ale w rzeczywistości jest w stanie zrobić o wiele więcej.  Kiedyś napisałem cały zestaw do zarządzania stanem w Perlu.  Co za przypadek.   W każdym razie…

Ten skrypt korzysta z LWP::UserAgent i HTTP::Request oraz opcjonalnie z pakietów JSON i Data::Dumper, w zależności od tego, jak chcesz zobaczyć wyjście. Jak w przypadku wszystkich innych skryptów na tej stronie, powinieneś wcześniej ustawić zmienną środowiskową SPARKPOST_API_KEY na swój wygenerowany klucz API, który zawiera funkcję walidacji odbiorcy. Ten skrypt twardo ustawia $recipient = ‘test@gmail.com’, ale możesz łatwo dodać wejście z wiersza poleceń lub pobrać z pliku.

Po wypełnieniu wszystkich zmiennych, ładujemy HTTP:Request z parametrami GET i wysyłamy go do LWP:UserAgent.  Wynikowa „wiadomość” to rezultat testu walidacji e-mail jako tablica.  Możesz użyć JSON i DUMPER, aby wyświetlić wynik lub po prostu przekazać tablicę do dalszego przetwarzania.

VB.net

Visual Basic nie jest wizualny i nie jest podstawowy (moim zdaniem), ale jest #6 w indeksie języków TIOBE, więc jedziemy dalej.

inne sposoby aby to zrobić, ale najłatwiejsza ścieżka do sukcesu to użycie Visual Studio SDK na platformie Windows. Uruchom Visual Studio, rozpocznij nowy projekt i wybierz Visual Basic, następnie wybierz console.app.  Upewnij się, że używasz wersji VB, a nie wersji C# – łatwo to przeoczyć w SDK.

Visual Studio interface for creating a new project, highlighting options such as Console App (.NET Core) and ASP.NET Web Application, with sections for selecting the language, platform, and project type.


W tym momencie możesz edytować linie ręcznie lub skopiować/wkleić kod stąd do VS i zaoszczędzić mnóstwo czasu. Aby ten kod działał, musisz dodać zmienną środowiskową Windows.  Najłatwiej zrobić to, otwierając wiersz polecenia i używając setx.exe w ten sposób: 

C:\Users\me>setx SPARKPOST_API_KEY  "142<redacted<redacted>c531c3"

W Windows 10 jest to zastosowane w Twoim środowisku użytkownika, ale nie jest od razu dostępne w bieżącej sesji poleceń, więc przetestowanie tego za pomocą „set” nie zadziała, ale będzie dostępne w kodzie. Jeśli skompilujesz i uruchomisz kod zawarty w repozytorium, zobaczysz wynik walidacji. Dla deweloperów budujących produkcyjne odbiorniki webhook, które muszą walidować adresy e-mail na dużą skalę, nasz poradnik odbiorcy webhook Azure Functions pokazuje, jak budować rozwiązania bezserwerowe, które mogą efektywnie obsługiwać przepływy pracy walidacji.

Visual Basic nie jest wizualny i nie jest podstawowy (moim zdaniem), ale jest #6 w indeksie języków TIOBE, więc jedziemy dalej.

inne sposoby aby to zrobić, ale najłatwiejsza ścieżka do sukcesu to użycie Visual Studio SDK na platformie Windows. Uruchom Visual Studio, rozpocznij nowy projekt i wybierz Visual Basic, następnie wybierz console.app.  Upewnij się, że używasz wersji VB, a nie wersji C# – łatwo to przeoczyć w SDK.

Visual Studio interface for creating a new project, highlighting options such as Console App (.NET Core) and ASP.NET Web Application, with sections for selecting the language, platform, and project type.


W tym momencie możesz edytować linie ręcznie lub skopiować/wkleić kod stąd do VS i zaoszczędzić mnóstwo czasu. Aby ten kod działał, musisz dodać zmienną środowiskową Windows.  Najłatwiej zrobić to, otwierając wiersz polecenia i używając setx.exe w ten sposób: 

C:\Users\me>setx SPARKPOST_API_KEY  "142<redacted<redacted>c531c3"

W Windows 10 jest to zastosowane w Twoim środowisku użytkownika, ale nie jest od razu dostępne w bieżącej sesji poleceń, więc przetestowanie tego za pomocą „set” nie zadziała, ale będzie dostępne w kodzie. Jeśli skompilujesz i uruchomisz kod zawarty w repozytorium, zobaczysz wynik walidacji. Dla deweloperów budujących produkcyjne odbiorniki webhook, które muszą walidować adresy e-mail na dużą skalę, nasz poradnik odbiorcy webhook Azure Functions pokazuje, jak budować rozwiązania bezserwerowe, które mogą efektywnie obsługiwać przepływy pracy walidacji.

Visual Basic nie jest wizualny i nie jest podstawowy (moim zdaniem), ale jest #6 w indeksie języków TIOBE, więc jedziemy dalej.

inne sposoby aby to zrobić, ale najłatwiejsza ścieżka do sukcesu to użycie Visual Studio SDK na platformie Windows. Uruchom Visual Studio, rozpocznij nowy projekt i wybierz Visual Basic, następnie wybierz console.app.  Upewnij się, że używasz wersji VB, a nie wersji C# – łatwo to przeoczyć w SDK.

Visual Studio interface for creating a new project, highlighting options such as Console App (.NET Core) and ASP.NET Web Application, with sections for selecting the language, platform, and project type.


W tym momencie możesz edytować linie ręcznie lub skopiować/wkleić kod stąd do VS i zaoszczędzić mnóstwo czasu. Aby ten kod działał, musisz dodać zmienną środowiskową Windows.  Najłatwiej zrobić to, otwierając wiersz polecenia i używając setx.exe w ten sposób: 

C:\Users\me>setx SPARKPOST_API_KEY  "142<redacted<redacted>c531c3"

W Windows 10 jest to zastosowane w Twoim środowisku użytkownika, ale nie jest od razu dostępne w bieżącej sesji poleceń, więc przetestowanie tego za pomocą „set” nie zadziała, ale będzie dostępne w kodzie. Jeśli skompilujesz i uruchomisz kod zawarty w repozytorium, zobaczysz wynik walidacji. Dla deweloperów budujących produkcyjne odbiorniki webhook, które muszą walidować adresy e-mail na dużą skalę, nasz poradnik odbiorcy webhook Azure Functions pokazuje, jak budować rozwiązania bezserwerowe, które mogą efektywnie obsługiwać przepływy pracy walidacji.

Rdzawa

Rust to język programowania dla systemów i usług internetowych, który koncentruje się na wydajności, bezpieczeństwie i współbieżności. Jak mówi Wikipedia, Rust od 2016 roku jest „najbardziej lubianym językiem programowania” w ankiecie programistów Stack Overflow.

Kod Rust w naszym repozytorium Github wykorzystuje bibliotekę reqwest z tokio async, podobnie jak przykład w Rust Cookbook. (To nie jest literówka, nazwa biblioteki reqwest jest tak zapisana). Dołączyliśmy plik konfiguracyjny menedżera pakietów cargo konfiguracyjny plik, abyś mógł budować i uruchamiać z:

cd rust_recipient_validation cargo run

To skompiluje pakiet do kodu wykonywalnego i uruchomi go:

Finished dev [unoptimized + debuginfo] target(s) in 0.10s
Running `target/debug/rust_recipient_validation`
Status: 200 OK
Body: : (etc)

Kod używa std:env do odczytania zmiennej środowiskowej SPARKPOST_API_KEY. Klausz match obsługuje przypadek, gdy klucz jest nieokreślony. Jeśli wszystko jest w porządku, tworzony jest nowy reqwest::Client, a następnie wydawane jest wywołanie async, po którym następuje .await? (zobacz dokumentację reqwest). Async, zamiast prostszego wywołania blokującego, wydaje się potrzebne do ustawienia nagłówków żądań. Tekst ciała odpowiedzi jest odczytywany za pomocą drugiego .await?, zgodnie z tym przykładem.

Rust to język programowania dla systemów i usług internetowych, który koncentruje się na wydajności, bezpieczeństwie i współbieżności. Jak mówi Wikipedia, Rust od 2016 roku jest „najbardziej lubianym językiem programowania” w ankiecie programistów Stack Overflow.

Kod Rust w naszym repozytorium Github wykorzystuje bibliotekę reqwest z tokio async, podobnie jak przykład w Rust Cookbook. (To nie jest literówka, nazwa biblioteki reqwest jest tak zapisana). Dołączyliśmy plik konfiguracyjny menedżera pakietów cargo konfiguracyjny plik, abyś mógł budować i uruchamiać z:

cd rust_recipient_validation cargo run

To skompiluje pakiet do kodu wykonywalnego i uruchomi go:

Finished dev [unoptimized + debuginfo] target(s) in 0.10s
Running `target/debug/rust_recipient_validation`
Status: 200 OK
Body: : (etc)

Kod używa std:env do odczytania zmiennej środowiskowej SPARKPOST_API_KEY. Klausz match obsługuje przypadek, gdy klucz jest nieokreślony. Jeśli wszystko jest w porządku, tworzony jest nowy reqwest::Client, a następnie wydawane jest wywołanie async, po którym następuje .await? (zobacz dokumentację reqwest). Async, zamiast prostszego wywołania blokującego, wydaje się potrzebne do ustawienia nagłówków żądań. Tekst ciała odpowiedzi jest odczytywany za pomocą drugiego .await?, zgodnie z tym przykładem.

Rust to język programowania dla systemów i usług internetowych, który koncentruje się na wydajności, bezpieczeństwie i współbieżności. Jak mówi Wikipedia, Rust od 2016 roku jest „najbardziej lubianym językiem programowania” w ankiecie programistów Stack Overflow.

Kod Rust w naszym repozytorium Github wykorzystuje bibliotekę reqwest z tokio async, podobnie jak przykład w Rust Cookbook. (To nie jest literówka, nazwa biblioteki reqwest jest tak zapisana). Dołączyliśmy plik konfiguracyjny menedżera pakietów cargo konfiguracyjny plik, abyś mógł budować i uruchamiać z:

cd rust_recipient_validation cargo run

To skompiluje pakiet do kodu wykonywalnego i uruchomi go:

Finished dev [unoptimized + debuginfo] target(s) in 0.10s
Running `target/debug/rust_recipient_validation`
Status: 200 OK
Body: : (etc)

Kod używa std:env do odczytania zmiennej środowiskowej SPARKPOST_API_KEY. Klausz match obsługuje przypadek, gdy klucz jest nieokreślony. Jeśli wszystko jest w porządku, tworzony jest nowy reqwest::Client, a następnie wydawane jest wywołanie async, po którym następuje .await? (zobacz dokumentację reqwest). Async, zamiast prostszego wywołania blokującego, wydaje się potrzebne do ustawienia nagłówków żądań. Tekst ciała odpowiedzi jest odczytywany za pomocą drugiego .await?, zgodnie z tym przykładem.

Podsumowanie

W tym artykule przeszliśmy przez przykłady kodu walidacji odbiorcy w wielu językach. Oto nasza prośba do Ciebie.

Daj nam znać, jeśli uważasz, że pominęliśmy twój ulubiony język. Może nie mamy tak wielu przykładów jak Projekt Fibonacciego, ale chętnie dodamy więcej. Jeśli uważasz, że nasze przykłady można poprawić, daj nam znać!

W tym artykule przeszliśmy przez przykłady kodu walidacji odbiorcy w wielu językach. Oto nasza prośba do Ciebie.

Daj nam znać, jeśli uważasz, że pominęliśmy twój ulubiony język. Może nie mamy tak wielu przykładów jak Projekt Fibonacciego, ale chętnie dodamy więcej. Jeśli uważasz, że nasze przykłady można poprawić, daj nam znać!

W tym artykule przeszliśmy przez przykłady kodu walidacji odbiorcy w wielu językach. Oto nasza prośba do Ciebie.

Daj nam znać, jeśli uważasz, że pominęliśmy twój ulubiony język. Może nie mamy tak wielu przykładów jak Projekt Fibonacciego, ale chętnie dodamy więcej. Jeśli uważasz, że nasze przykłady można poprawić, daj nam znać!

Inne wiadomości

Przeczytaj więcej z tej kategorii

A person is standing at a desk while typing on a laptop.

Kompletna platforma oparta na sztucznej inteligencji, która rośnie wraz z Twoim biznesem.

A person is standing at a desk while typing on a laptop.

Kompletna platforma oparta na sztucznej inteligencji, która rośnie wraz z Twoim biznesem.