Στείλτε type και value στο GenderAPI.io V2. Συγκρίνετε τις παραμέτρους ερωτήματος του GET με το JSON των αιτημάτων POST, μαζί με το country, τη λειτουργία AI και το forceToGenderize.
Παράμετροι JSON για POST
Παράμετρος
Τύπος
Υποχρεωτικό
Προεπιλογή
Περιγραφή
Παράμετροςtype
Τύποςstring
ΥποχρεωτικόΝαι
Προεπιλογή—
ΠεριγραφήΚατηγορία εισόδου: name, email ή username.
Παράμετροςvalue
Τύποςstring
ΥποχρεωτικόΝαι
Προεπιλογή—
ΠεριγραφήΥποχρεωτικό. 1–254 χαρακτήρες, όχι κενό και χωρίς χαρακτήρες ελέγχου. Οι τιμές email πρέπει να έχουν έγκυρη σύνταξη email.
Παράμετροςcountry
Τύποςstring
ΥποχρεωτικόΌχι
Προεπιλογή—
ΠεριγραφήΠροαιρετικός κωδικός ISO 3166-1 alpha-2 με κεφαλαία γράμματα, για παράδειγμα TR ή US. Μια αναζήτηση για συγκεκριμένη χώρα μπορεί να καταφύγει στο καθολικό σύνολο δεδομένων.
ΠαράμετροςforceToGenderize
Τύποςboolean
ΥποχρεωτικόΌχι
Προεπιλογήfalse
ΠεριγραφήΕλέγχει πρώτα το σύνολο δεδομένων και, αν δεν υπάρξει αποτέλεσμα, χρησιμοποιεί AI με ανάλυση ψευδωνύμων. Υποστηρίζεται για name, email και username.
Παράμετροςoptions
Τύποςobject
ΥποχρεωτικόΌχι
Προεπιλογή—
ΠεριγραφήΠεδίο με τις επιλογές AI για κάθε είσοδο.
Παράμετροςoptions.ai_mode
Τύποςstring
ΥποχρεωτικόΌχι
Προεπιλογήfallback
ΠεριγραφήΕπιτρεπόμενες τιμές: off, fallback, always. Με forceToGenderize: true, παραλείψτε αυτό το πεδίο ή χρησιμοποιήστε fallback.
Παράμετροςid
Τύποςstring
ΥποχρεωτικόΌχι
Προεπιλογή—
ΠεριγραφήΠροαιρετικό αναγνωριστικό 1–64 χαρακτήρων στο JSON του POST. Επιστρέφεται δίπλα στο αντίστοιχο αποτέλεσμα της παρτίδας και πρέπει να είναι μοναδικό μέσα στην παρτίδα. Στις μεμονωμένες προβλέψεις γίνεται δεκτό, αλλά δεν επιστρέφεται. Δεν υποστηρίζεται στα ερωτήματα GET.
Η παύλα (—) σημαίνει ότι δεν ορίζεται προεπιλεγμένη τιμή. Παραλείψτε τις προαιρετικές εισόδους που δεν χρησιμοποιείτε και μη στέλνετε null. Τα παραδείγματα αποκρίσεων είναι ενδεικτικά, όχι προεπιλεγμένες τιμές. Η ένδειξη «Μπορεί να είναι null» σημαίνει ότι το πεδίο μπορεί να περιέχει JSON null. Ένα πεδίο που παραλείπεται περιγράφεται χωριστά.
Παραλείψτε τα προαιρετικά πεδία που δεν χρησιμοποιείτε. Μη στέλνετε null ή κενές συμβολοσειρές στη θέση των country ή options. Οι λογικές τιμές JSON πρέπει να είναι true ή false, όχι συμβολοσειρές. Υποστηρίζεται κείμενο UTF-8, επομένως δεν χρειάζεται μεταγραφή των ονομάτων σε ASCII.
Παράμετροι ερωτήματος GET
Παράμετρος
Τύπος
Υποχρεωτικό
Προεπιλογή
Περιγραφή
Παράμετροςtype
Τύποςstring
ΥποχρεωτικόΌχι
Προεπιλογήname
ΠεριγραφήΚατηγορία εισόδου: name, email ή username.
Παράμετροςvalue
Τύποςstring
ΥποχρεωτικόΝαι
Προεπιλογή—
ΠεριγραφήΥποχρεωτικό. 1–254 χαρακτήρες, όχι κενό και χωρίς χαρακτήρες ελέγχου. Οι τιμές email πρέπει να έχουν έγκυρη σύνταξη email.
Παράμετροςcountry
Τύποςstring
ΥποχρεωτικόΌχι
Προεπιλογή—
ΠεριγραφήΠροαιρετικός κωδικός ISO 3166-1 alpha-2 με κεφαλαία γράμματα, για παράδειγμα TR ή US. Μια αναζήτηση για συγκεκριμένη χώρα μπορεί να καταφύγει στο καθολικό σύνολο δεδομένων.
ΠαράμετροςforceToGenderize
Τύποςboolean
ΥποχρεωτικόΌχι
Προεπιλογήfalse
ΠεριγραφήΕλέγχει πρώτα το σύνολο δεδομένων και, αν δεν υπάρξει αποτέλεσμα, χρησιμοποιεί AI με ανάλυση ψευδωνύμων. Υποστηρίζεται για name, email και username.
Παράμετροςai_mode
Τύποςstring
ΥποχρεωτικόΌχι
Προεπιλογήfallback
ΠεριγραφήΕπιτρεπόμενες τιμές: off, fallback, always. Με forceToGenderize: true, παραλείψτε αυτό το πεδίο ή χρησιμοποιήστε fallback.
Παράμετροςkey
Τύποςstring
ΥποχρεωτικόΌχι
Προεπιλογή—
ΠεριγραφήΥπάρχον κλειδί API για τα αιτήματα GET. Προτιμήστε την κεφαλίδα Authorization. Τα κλειδιά που λείπουν ή είναι άγνωστα χρησιμοποιούν τη δοκιμαστική πρόσβαση IP.
Το GET χρησιμοποιεί τα type, value, country, forceToGenderize και ai_mode απευθείας στη συμβολοσειρά ερωτήματος, καθώς και την προαιρετική παράμετρο key. Κωδικοποιήστε τις τιμές με τον κωδικοποιητή παραμέτρων URL του προγράμματος-πελάτη HTTP σας, για παράδειγμα το @ γίνεται %40. Για λογικές τιμές στο GET στείλτε true ή false. Τα άγνωστα πεδία και οι μη έγκυρες τιμές απορρίπτονται.
Πριν στείλετε το αίτημα
Στείλτε τα αιτήματα πρόβλεψης στο GenderAPI.io V2 με POST https://api.genderapi.io/api/v2/gender, με τα type και value στο σώμα JSON. Χρησιμοποιήστε το υπάρχον κλειδί GenderAPI.io σας σε Authorization: Bearer YOUR_API_KEY και Content-Type: application/json. Διαβάστε το αποτέλεσμα στο data και τις πληροφορίες πρόσβασης και χρέωσης στο meta. Κάθε αίτημα επεξεργάζεται ανεξάρτητα.
Επιλέξτε τη γλώσσα προγραμματισμού στο παράδειγμα κώδικα. Ορίστε το GENDERAPI_API_KEY στο περιβάλλον της διεργασίας πριν από την εκτέλεση. Τα κλειδιά που λείπουν ή δεν αναγνωρίζονται μπορεί να χρησιμοποιήσουν την κοινόχρηστη δοκιμαστική πρόσβαση IP. Γι' αυτό, όταν ενσωματώνετε έναν λογαριασμό, ελέγξτε ότι το meta.access.mode έχει την τιμή api_key.
Αυτό το παράδειγμα χρησιμοποιεί τα κοινά πεδία αιτήματος για ένα όνομα. Αλλάξτε τα type και value για μια διεύθυνση email ή ένα όνομα χρήστη ή ορίστε τα options.ai_mode και forceToGenderize όπως περιγράφεται παραπάνω.
Επιλέξτε γλώσσα προγραμματισμού.Ρυθμίστε το κλειδί API σας, και έπειτα εκτελέστε το παράδειγμα στον διακομιστή σας.
Κάθε αίτημα πρόβλεψης είναι μια νέα χρεώσιμη λειτουργία, ακόμη και όταν πρόκειται για νέα προσπάθεια. Αυτά τα παραδείγματα δεν επαναλαμβάνουν αυτόματα το αίτημα. Ελέγξτε την κατάσταση χρέωσης πριν στείλετε άλλο αίτημα.
Πριν από την εκτέλεση: πρόσβαση και χειρισμός σφαλμάτων
Εκτελέστε αυτά τα παραδείγματα στον διακομιστή σας. Ορίστε στο περιβάλλον της διεργασίας το GENDERAPI_API_KEY με το υπάρχον κλειδί API σας. Ελέγξτε ότι το meta.access.mode έχει την τιμή api_key, επειδή ένα κλειδί που δεν αναγνωρίζεται μπορεί να οδηγήσει στη δοκιμαστική πρόσβαση IP.
Στις αποκρίσεις JSON με HTTP 4xx και 5xx διατηρείται το σώμα του σφάλματος και το παράδειγμα τερματίζει με μη μηδενικό κωδικό εξόδου. Ελέγξτε τα code, action και meta.usage.billing_status πριν δοκιμάσετε ξανά.
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\":\"name\",\"value\":\"Γιώργος\",\"country\":\"GR\"}")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.
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\":\"name\",\"value\":\"Γιώργος\",\"country\":\"GR\"}"; 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\":\"name\",\"value\":\"Γιώργος\",\"country\":\"GR\"}", 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.}