GenderAPI.io V2: έλεγχος ταυτότητας και δωρεάν δοκιμαστική πρόσβαση IP
Χρησιμοποιήστε το υπάρχον κλειδί GenderAPI.io σας με έλεγχο ταυτότητας Bearer. Μάθετε για το κοινό υπόλοιπο του V1 και του V2, τη δοκιμαστική πρόσβαση IP και τον έλεγχο του τύπου πρόσβασης.
Έλεγχος ταυτότητας και δωρεάν δοκιμαστική πρόσβαση
Παράμετρος
Τύπος
Υποχρεωτικό
Προεπιλογή
Περιγραφή
ΠαράμετροςAuthorization
Τύποςstring
ΥποχρεωτικόΌχι
Προεπιλογή—
ΠεριγραφήΣτείλτε Bearer YOUR_API_KEY για να χρησιμοποιήσετε έναν λογαριασμό. Τα κλειδιά που λείπουν ή είναι άγνωστα χρησιμοποιούν την κοινόχρηστη δοκιμαστική πρόσβαση IP.
ΠαράμετροςContent-Type
Τύποςstring
ΥποχρεωτικόΜόνο POST
Προεπιλογή—
ΠεριγραφήΣτείλτε application/json στα αιτήματα POST.
Στείλτε Authorization: Bearer YOUR_API_KEY από τον διακομιστή σας. Αντικαταστήστε το YOUR_API_KEY με το υπάρχον κλειδί GenderAPI.io σας. Οι δύο εκδόσεις χρησιμοποιούν το ίδιο υπόλοιπο. Δεν χρειάζεται ξεχωριστή συνδρομή ούτε ξεχωριστό κλειδί για το V2.
Όλα τα αιτήματα POST απαιτούν Content-Type: application/json. Χρησιμοποιήστε το υπάρχον κλειδί API σας στην κεφαλίδα Bearer. Κάθε αίτημα επεξεργάζεται ανεξάρτητα και τα επαναλαμβανόμενα αιτήματα χρεώνονται κανονικά.
Μόνο το GET /gender δέχεται επιπλέον την παράμετρο ερωτήματος key. Στις ενσωματώσεις προτιμήστε την κεφαλίδα Authorization, επειδή τα URL μπορεί να αποθηκευτούν στο ιστορικό του προγράμματος περιήγησης και σε αρχεία καταγραφής. Μην τοποθετείτε ιδιωτικά κλειδιά σε κώδικα frontend.
Ένα κλειδί που λείπει, έχει μη έγκυρη μορφή ή δεν αναγνωρίζεται οδηγεί στη δοκιμαστική πρόσβαση IP, την οποία το V2 μοιράζεται με το V1. Ένα αναγνωρισμένο κλειδί που είναι απενεργοποιημένο, έχει λήξει ή υπόκειται σε περιορισμούς δεν οδηγεί στη δοκιμαστική πρόσβαση IP. Ελέγξτε το meta.access.mode: api_key, ip_trial ή unauthenticated. Οι λόγοι μετάβασης στη δοκιμαστική πρόσβαση IP είναι api_key_missing, api_key_invalid ή api_key_not_found. Ένα μη έγκυρο κλειδί μπορεί επομένως να λάβει επιτυχή απόκριση μέσω της δοκιμαστικής πρόσβασης IP. Γι' αυτό ελέγχετε πάντα τον τύπο πρόσβασης στο περιβάλλον παραγωγής.
Οι πιστώσεις της δοκιμαστικής πρόσβασης IP επαναφέρονται στο τέλος μιας περιόδου 24 ωρών, όχι απαραίτητα τα μεσάνυχτα. Διαβάστε το resets_at μέσω του /usage. Όλοι όσοι χρησιμοποιούν την ίδια δημόσια διεύθυνση IP μοιράζονται αυτό το όριο.
Αντιγράψτε το κλειδί API από τον λογαριασμό σας στο GenderAPI.io. Αντικαταστήστε παρακάτω το YOUR_API_KEY με αυτό το κλειδί και έπειτα εκτελέστε το παράδειγμα που επιλέξατε στην ίδια συνεδρία τερματικού. Αυτές οι εντολές ορίζουν μια μεταβλητή περιβάλλοντος μόνο για τη συγκεκριμένη συνεδρία. Το δημοσιευμένο σύμβολο κράτησης θέσης δεν είναι λειτουργικό κλειδί.
Σε μια εφαρμογή ή μια ανάπτυξη, ρυθμίστε το GENDERAPI_API_KEY ως μυστικό στην πλευρά του διακομιστή. Τα παραδείγματα δεν φορτώνουν αυτόματα αρχείο .env. Κρατήστε το κλειδί εκτός των πακέτων κώδικα του προγράμματος περιήγησης, του συστήματος ελέγχου εκδόσεων και των δημόσιων URL.
Τερματικό macOS/Linux
export GENDERAPI_API_KEY='YOUR_API_KEY'
Windows PowerShell
$env:GENDERAPI_API_KEY = 'YOUR_API_KEY'
Ελέγξτε την πρόσβαση χωρίς να χρησιμοποιήσετε πιστώσεις
Καλέστε το GET /usage με την κεφαλίδα Bearer. Ένα έγκυρο κλειδί λογαριασμού επιστρέφει meta.access.mode: api_key. Αν το αποτέλεσμα είναι ip_trial, ελέγξτε το κλειδί που αντιγράψατε πριν ζητήσετε προβλέψεις. Αυτό το αίτημα είναι δωρεάν, ακόμη και για λογαριασμό χωρίς υπόλοιπο πιστώσεων.
Επιλέξτε γλώσσα προγραμματισμού.Ρυθμίστε το κλειδί 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")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/usage", method="GET", headers={ "Authorization": "Bearer " + api_key, },)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"); 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/usage")) .timeout(Duration.ofSeconds(30)) .header("Authorization", "Bearer " + apiKey) .GET() .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.Get, "https://api.genderapi.io/api/v2/usage");request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", apiKey);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.}