Χρησιμοποιήστε το GenderAPI v2 για να συμπεράνουμε το φύλο από ένα σήμα ονόματος email. Περιλαμβάνει παραδείγματα αιτημάτων και απαντήσεων, επικύρωση, άγνωστα αποτελέσματα και επιλογές τεχνητής νοημοσύνης.
Πριν στείλετε το αίτημα
Στείλτε το JSON στο POST https://api.genderapi.io/api/v2/gender. Χρησιμοποιήστε το υπάρχον κλειδί API στα Authorization: Bearer YOUR_API_KEY και Content-Type: application/json. Κάθε αίτημα επεξεργάζεται ανεξάρτητα.
Επιλέξτε τη γλώσσα σας στο παράδειγμα κώδικα. Ρυθμίστε το GENDERAPI_API_KEY στο περιβάλλον διεργασίας πριν το εκτελέσετε. Τα κλειδιά που λείπουν ή δεν αναγνωρίζονται μπορούν να χρησιμοποιήσουν την κοινόχρηστη δοκιμή IP, επομένως επιβεβαιώστε ότι το meta.access.mode είναι api_key κατά την ενοποίηση ενός λογαριασμού.
Χρησιμοποιήστε type: email. Το API αναζητά ένα σήμα με το όνομα που μπορεί να χρησιμοποιηθεί στη διεύθυνση. Τα κοινόχρηστα εισερχόμενα και τα αδιαφανή τοπικά μέρη ενδέχεται να προκαλέσουν ένα άγνωστο αποτέλεσμα. Το forceToGenderize είναι προαιρετικό και εδώ. επιτρέπει την εξαγωγή συμπερασμάτων AI από ένα ψευδώνυμο ακόμη και χωρίς πραγματικό όνομα.
Επιλέξτε γλώσσα προγραμματισμού.Ρυθμίστε το κλειδί API, και μετά εκτελέστε το παράδειγμα στον διακομιστή σας.
Κάθε αίτημα πρόβλεψης είναι μια νέα χρεώσιμη λειτουργία, συμπεριλαμβανομένων των επαναλήψεων. Αυτά τα παραδείγματα δεν επαναλαμβάνονται αυτόματα. Ελέγξτε την κατάσταση χρέωσης πριν στείλετε άλλο αίτημα.
Πριν την εκτέλεση: πρόσβαση και διαχείριση σφαλμάτων
Εκτελέστε αυτά τα παραδείγματα στον διακομιστή σας. Ρυθμίστε το GENDERAPI_API_KEY στο περιβάλλον διεργασίας στο υπάρχον κλειδί API. Επιβεβαιώστε ότι το meta.access.mode είναι api_key: ένα μη αναγνωρισμένο κλειδί μπορεί να επιστρέψει στη δοκιμή IP.
Οι αποκρίσεις HTTP 4xx και 5xx JSON διατηρούν το σώμα σφάλματος και επιστρέφουν μια κατάσταση εξόδου μη μηδενική. Ελέγξτε τα code, action και meta.usage.billing_status πριν δοκιμάσετε ξανά.
// Server-side Node.js. Save as example.mjs.const apiKey = process.env.GENDERAPI_API_KEY;if (!apiKey) throw new Error("Set GENDERAPI_API_KEY");const body = { "type": "email", "value": "alice.smith@example.com", "country": "US"};const response = await fetch("https://api.genderapi.io/api/v2/gender", { method: "POST", headers: { Authorization: `Bearer ${apiKey}`, "Content-Type": "application/json", }, body: JSON.stringify(body), signal: AbortSignal.timeout(30_000), redirect: "error",});const raw = await response.text();if (!(response.headers.get("content-type") ?? "").includes("json")) { throw new Error(`HTTP ${response.status}: expected JSON; request ID ${response.headers.get("x-request-id")}`);}const result = JSON.parse(raw); // Also accepts application/problem+json.if (!response.ok) { console.error(`HTTP ${response.status}`, result); process.exitCode = 1; // A retry is a new operation; inspect billing first.} else { console.log(JSON.stringify(result, null, 2)); // For batches, inspect every item: HTTP 200 may contain item errors.}
Node.js 22+; ενσωματωμένη ανάκτηση. Αποθηκεύστε ως example.mjs και εκτελέστε το node example.mjs. Τεκμηρίωση χρόνου εκτέλεσης
Python
import jsonimport osimport sysimport urllib.errorimport urllib.requestapi_key = os.environ.get("GENDERAPI_API_KEY")if not api_key: raise RuntimeError("Set GENDERAPI_API_KEY")body = json.loads("{\"type\":\"email\",\"value\":\"alice.smith@example.com\",\"country\":\"US\"}")class NoRedirect(urllib.request.HTTPRedirectHandler): def redirect_request(self, req, fp, code, msg, headers, newurl): return Nonerequest = urllib.request.Request( "https://api.genderapi.io/api/v2/gender", method="POST", data=json.dumps(body).encode("utf-8"), headers={ "Authorization": "Bearer " + api_key, "Content-Type": "application/json", },)opener = urllib.request.build_opener(NoRedirect())try: response = opener.open(request, timeout=30)except urllib.error.HTTPError as error: response = error # Keep the Problem Details body on non-2xx responses.with response: status = response.status raw = response.read().decode("utf-8") if "json" not in response.headers.get("Content-Type", ""): raise RuntimeError(f"HTTP {status}: expected a JSON response") result = json.loads(raw)print(json.dumps(result, indent=2), file=sys.stderr if status >= 300 else sys.stdout)if not 200 <= status < 300: sys.exit(1) # Inspect code, action and billing before retrying.# For batches, inspect every item even when HTTP status is 200.
Python 3,10+; τυπική βιβλιοθήκη. Αποθηκεύστε ως example.py και εκτελέστε το python3 example.py. Τεκμηρίωση χρόνου εκτέλεσης
PHP 8+ με την επέκταση cURL. Αποθηκεύστε ως example.php και εκτελέστε το php example.php. Τεκμηρίωση χρόνου εκτέλεσης
Java
import java.net.URI;import java.net.http.HttpClient;import java.net.http.HttpRequest;import java.net.http.HttpResponse;import java.nio.charset.StandardCharsets;import java.time.Duration;public class GenderApiExample { private static String requiredEnv(String name) { String value = System.getenv(name); if (value == null || value.isBlank()) throw new IllegalStateException("Set " + name); return value; } public static void main(String[] args) throws Exception { String apiKey = requiredEnv("GENDERAPI_API_KEY"); String body = "{\"type\":\"email\",\"value\":\"alice.smith@example.com\",\"country\":\"US\"}"; HttpClient client = HttpClient.newBuilder() .connectTimeout(Duration.ofSeconds(10)) .followRedirects(HttpClient.Redirect.NEVER) .build(); HttpRequest request = HttpRequest.newBuilder(URI.create("https://api.genderapi.io/api/v2/gender")) .timeout(Duration.ofSeconds(30)) .header("Authorization", "Bearer " + apiKey) .header("Content-Type", "application/json") .POST(HttpRequest.BodyPublishers.ofString(body, StandardCharsets.UTF_8)) .build(); HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString(StandardCharsets.UTF_8)); if (!response.headers().firstValue("content-type").orElse("").contains("json")) { throw new IllegalStateException("HTTP " + response.statusCode() + ": expected JSON"); } // JSON text; parse with your application's JSON library when integrating. if (response.statusCode() < 200 || response.statusCode() >= 300) { System.err.println(response.body()); // Includes Problem Details. System.exit(1); } System.out.println(response.body()); // For batches, inspect each item's data or error, including on HTTP 200. }}
Java 17+; τυπικό πελάτη HTTP. Αποθηκεύστε ως GenderApiExample.java και εκτελέστε το java GenderApiExample.java. Τεκμηρίωση χρόνου εκτέλεσης
C# / .NET
using System;using System.Net.Http;using System.Net.Http.Headers;using System.Text;using System.Text.Json;string RequiredEnv(string name) => !string.IsNullOrWhiteSpace(Environment.GetEnvironmentVariable(name)) ? Environment.GetEnvironmentVariable(name)! : throw new InvalidOperationException($"Set {name}");var apiKey = RequiredEnv("GENDERAPI_API_KEY");using var handler = new HttpClientHandler { AllowAutoRedirect = false };using var client = new HttpClient(handler) { Timeout = TimeSpan.FromSeconds(30) };using var request = new HttpRequestMessage(HttpMethod.Post, "https://api.genderapi.io/api/v2/gender");request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", apiKey);request.Content = new StringContent("{\"type\":\"email\",\"value\":\"alice.smith@example.com\",\"country\":\"US\"}", Encoding.UTF8, "application/json");using var response = await client.SendAsync(request);var raw = await response.Content.ReadAsStringAsync();if (!(response.Content.Headers.ContentType?.MediaType?.Contains("json") ?? false)) throw new InvalidOperationException($"HTTP {(int)response.StatusCode}: expected JSON");using var result = JsonDocument.Parse(raw);if (!response.IsSuccessStatusCode){ Console.Error.WriteLine(result.RootElement); // Preserve Problem Details. Environment.ExitCode = 1;}else{ Console.WriteLine(result.RootElement); // For batches, inspect every item even on HTTP 200.}
Εφαρμογή κονσόλας .NET 8+. Χρησιμοποιήστε το ως Program.cs σε ένα έργο κονσόλας και, στη συνέχεια, εκτελέστε το dotnet run. Τεκμηρίωση χρόνου εκτέλεσης
Go
package mainimport ( "encoding/json" "fmt" "io" "net/http" "os" "strings" "time")func requiredEnv(name string) string { value := os.Getenv(name) if value == "" { panic("Set " + name) } return value}func run() error { apiKey := requiredEnv("GENDERAPI_API_KEY") body := "{\"type\":\"email\",\"value\":\"alice.smith@example.com\",\"country\":\"US\"}" request, err := http.NewRequest("POST", "https://api.genderapi.io/api/v2/gender", strings.NewReader(body)) if err != nil { return err } request.Header.Set("Authorization", "Bearer " + apiKey) request.Header.Set("Content-Type", "application/json") client := &http.Client{ Timeout: 30 * time.Second, CheckRedirect: func(req *http.Request, via []*http.Request) error { return http.ErrUseLastResponse }, } response, err := client.Do(request) if err != nil { return err } defer response.Body.Close() raw, err := io.ReadAll(response.Body) if err != nil { return err } if !strings.Contains(response.Header.Get("Content-Type"), "json") || !json.Valid(raw) { return fmt.Errorf("HTTP %d: expected a JSON response", response.StatusCode) } if response.StatusCode < 200 || response.StatusCode >= 300 { return fmt.Errorf("HTTP %d: %s", response.StatusCode, raw) } fmt.Println(string(raw)) // For batches, inspect every item even on HTTP 200. return nil}func main() { if err := run(); err != nil { fmt.Fprintln(os.Stderr, err) // Keep Problem Details for error handling. os.Exit(1) }}
Go 1,22+; τυπική βιβλιοθήκη. Αποθηκεύστε ως main.go και εκτελέστε το go run main.go. Τεκμηρίωση χρόνου εκτέλεσης
Παράδειγμα απάντησης
Αυτή η συνθετική απόκριση απεικονίζει το σχήμα JSON, όχι την ακρίβεια μέτρησης ή ένα εγγυημένο ζωντανό αποτέλεσμα. Εμφανίζει δοκιμαστική πρόσβαση IP. μια επαληθευμένη λειτουργία αναφέρει πεδία ορίου μόνο για δοκιμαστικά meta.access.mode: api_key και null. Διαβάστε τα δεδομένα για το συμπέρασμα και το meta.usage για το αποτέλεσμα χρέωσης της λειτουργίας.
Το value πρέπει να είναι μια συντακτικά έγκυρη διεύθυνση email. Μη έγκυρη σύνταξη επιστρέφει το HTTP 422 πριν από τη χρέωση. Η επικύρωση σύνταξης δεν αποδεικνύει ότι το γραμματοκιβώτιο υπάρχει ή ανήκει σε ένα συγκεκριμένο άτομο.
Ένα αναγνωρίσιμο προσωπικό όνομα στη διεύθυνση μπορεί να ταιριάζει με το σύνολο δεδομένων. Τα κοινόχρηστα γραμματοκιβώτια, οι διευθύνσεις ρόλων και τα αδιαφανή τοπικά μέρη μπορούν να επιστρέψουν το φύλο: null. Από προεπιλογή, μια ανεπίλυτη μεμονωμένη αναζήτηση χρησιμοποιεί συνηθισμένο εναλλακτικό AI για 1 πίστωση συνολικά, συμπεριλαμβανομένου ενός επιτυχημένου άγνωστου αποτελέσματος.
Χρησιμοποιήστε το forceToGenderize: true εάν θέλετε συμπέρασμα τεχνητής νοημοσύνης με επίγνωση ψευδώνυμων όταν το σύνολο δεδομένων δεν έχει επιλυθεί. Αυτό κοστίζει 1 πίστωση για ένα επιλυμένο αποτέλεσμα δεδομένων ή 2 συνολικά εάν χρησιμοποιείται AI. Το API μπορεί να επιστρέψει το null. Ο τομέας ηλεκτρονικού ταχυδρομείου δεν αποτελεί απόδειξη της τοποθεσίας του ατόμου. παρέχει σε μια χώρα μόνο όταν είναι γνωστό το σχετικό πλαίσιο.