GenderAPI.io V2:n kenttien type, value, country, forceToGenderize ja ai_mode kuvaus sekä GET-kyselyjen ja POST-pyyntöjen JSON-rungon erot.
POST-pyynnön JSON-parametrit
Parametri
Tyyppi
Pakollinen
Oletusarvo
Kuvaus
Parametritype
Tyyppistring
PakollinenKyllä
Oletusarvo—
KuvausSyötteen luokka: name, email tai username.
Parametrivalue
Tyyppistring
PakollinenKyllä
Oletusarvo—
KuvausPakollinen. 1–254 merkkiä; ei saa olla tyhjä eikä sisältää ohjausmerkkejä. Sähköpostiarvon on oltava syntaksiltaan kelvollinen sähköpostiosoite.
Parametricountry
Tyyppistring
PakollinenEi
Oletusarvo—
KuvausValinnainen ISO 3166-1 alpha-2 -koodi isoilla kirjaimilla, esimerkiksi TR tai US. Maakohtainen haku voi siirtyä käyttämään globaalia tietoaineistoa.
ParametriforceToGenderize
Tyyppiboolean
PakollinenEi
Oletusarvofalse
KuvausHakee ensin tietoaineistosta ja sitten tarvittaessa lempinimiä tulkitsevalla tekoälyllä. Tuettu tyypeille name, email ja username.
Parametrioptions
Tyyppiobject
PakollinenEi
Oletusarvo—
KuvausKunkin syötteen tekoälyasetukset sisältävä objekti.
Parametrioptions.ai_mode
Tyyppistring
PakollinenEi
Oletusarvofallback
KuvausSallitut arvot: off, fallback, always. Kun forceToGenderize: true, jätä kenttä pois tai käytä fallback-arvoa.
Parametriid
Tyyppistring
PakollinenEi
Oletusarvo—
KuvausValinnainen 1–64 merkin tunniste POST-pyynnön JSON-rungossa. Palautetaan kunkin erätuloksen yhteydessä, ja sen on oltava yksilöllinen erän sisällä. Yksittäisissä ennusteissa se hyväksytään, mutta sitä ei palauteta. Ei tuettu GET-kyselyissä.
Viiva (—) tarkoittaa, ettei oletusarvoa aseteta. Jätä käyttämättömät valinnaiset syötteet pois; älä lähetä null-arvoa. Vastausesimerkit ovat havainnollistavia, eivät oletusarvoja. Null-sallinta tarkoittaa JSON null -arvon mahdollisuutta; puuttuva kenttä selitetään erikseen.
Jätä käyttämättömät valinnaiset kentät pois; älä lähetä null-arvoa tai tyhjää merkkijonoa kenttien country tai options sijaan. JSON-totuusarvojen on oltava true tai false, ei merkkijonoja. UTF-8-teksti on tuettu; nimiä ei tarvitse translitteroida ASCII-muotoon.
GET-kyselyparametrit
Parametri
Tyyppi
Pakollinen
Oletusarvo
Kuvaus
Parametritype
Tyyppistring
PakollinenEi
Oletusarvoname
KuvausSyötteen luokka: name, email tai username.
Parametrivalue
Tyyppistring
PakollinenKyllä
Oletusarvo—
KuvausPakollinen. 1–254 merkkiä; ei saa olla tyhjä eikä sisältää ohjausmerkkejä. Sähköpostiarvon on oltava syntaksiltaan kelvollinen sähköpostiosoite.
Parametricountry
Tyyppistring
PakollinenEi
Oletusarvo—
KuvausValinnainen ISO 3166-1 alpha-2 -koodi isoilla kirjaimilla, esimerkiksi TR tai US. Maakohtainen haku voi siirtyä käyttämään globaalia tietoaineistoa.
ParametriforceToGenderize
Tyyppiboolean
PakollinenEi
Oletusarvofalse
KuvausHakee ensin tietoaineistosta ja sitten tarvittaessa lempinimiä tulkitsevalla tekoälyllä. Tuettu tyypeille name, email ja username.
Parametriai_mode
Tyyppistring
PakollinenEi
Oletusarvofallback
KuvausSallitut arvot: off, fallback, always. Kun forceToGenderize: true, jätä kenttä pois tai käytä fallback-arvoa.
Parametrikey
Tyyppistring
PakollinenEi
Oletusarvo—
KuvausNykyinen API-avain GET-pyyntöihin. Käytä mieluummin Authorization-otsaketta; puuttuva tai tuntematon avain käyttää IP-kokeilua.
GET käyttää kenttiä type, value, country, forceToGenderize ja ai_mode suoraan kyselymerkkijonossa sekä valinnaista key-parametria. Koodaa arvot HTTP-asiakkaasi URL-parametrikoodauksella; esimerkiksi @ muuttuu muotoon %40. Anna GET-kyselyn totuusarvot muodossa true tai false. Tuntemattomat kentät ja virheelliset arvot hylätään.
Ennen pyynnön lähettämistä
Lähetä JSON-pyyntö: POST https://api.genderapi.io/api/v2/gender. Käytä nykyistä API-avaintasi otsakkeessa Authorization: Bearer YOUR_API_KEY ja lisää Content-Type: application/json. Jokainen pyyntö käsitellään erikseen.
Valitse kieli koodiesimerkistä. Aseta GENDERAPI_API_KEY prosessin ympäristöön ennen suorittamista. Puuttuva tai tunnistamaton avain voi käyttää jaettua IP-kokeilua, joten varmista tilin integroinnissa, että meta.access.mode on api_key.
Tämä esimerkki käyttää nimihaun yhteisiä pyyntökenttiä. Vaihda type ja value, jos syöte on sähköpostiosoite tai käyttäjänimi, tai aseta options.ai_mode ja forceToGenderize yllä kuvatulla tavalla.
Valitse ohjelmointikieli.Määritä API-avain, suorita sitten esimerkki palvelimellasi.
Jokainen ennustepyyntö on uusi laskutettava toiminto, myös uudelleenyritys. Nämä esimerkit eivät yritä uudelleen automaattisesti. Tarkista laskutuksen tila ennen uuden pyynnön lähettämistä.
Ennen suorittamista: käyttöoikeus ja virheiden käsittely
Suorita esimerkit palvelimellasi. Aseta prosessin ympäristömuuttujan GENDERAPI_API_KEY arvoksi nykyinen API-avaimesi. Varmista, että meta.access.mode on api_key: tunnistamaton avain voi siirtää pyynnön IP-kokeiluun.
HTTP 4xx- ja 5xx-JSON-vastauksissa esimerkit säilyttävät virherungon ja palauttavat nollasta poikkeavan poistumiskoodin. Tarkista code, action ja meta.usage.billing_status ennen uutta yritystä.
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\":\"Juha\",\"country\":\"FI\"}")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\":\"Juha\",\"country\":\"FI\"}"; 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+; standardikirjaston HTTP-asiakas. Tallenna nimellä GenderApiExample.java ja suorita java GenderApiExample.java. Suoritusympäristön dokumentaatio
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\":\"Juha\",\"country\":\"FI\"}", 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+ -konsolisovellus. Käytä konsoliprojektissa nimellä Program.cs ja suorita sitten dotnet run. Suoritusympäristön dokumentaatio
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\":\"name\",\"value\":\"Juha\",\"country\":\"FI\"}" 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) }}