Hold integrasjonen på Node.js-serveren din
Denne veiledningen kaller endepunktet https://api.genderapi.io/api/v2/gender i GenderAPI.io V2 med en API-nøkkel som Bearer-token. Bruk Node.js 22 eller nyere, og last ned genderapi-v2.mjs til prosjektet ditt. Denne ES-modulen bruker den innebygde fetch og AbortSignal.timeout; ingen npm-pakke er nødvendig. Med filtypen .mjs kan du importere modulen fra en annen ES-modul uten å endre package.json.
Angi GENDERAPI_API_KEY i miljøet på serveren. Ikke pakk nøkkelen inn i React, Vue eller JavaScript som kjører i nettleseren. La din egen server autentisere brukerne av applikasjonen og kalle GenderAPI.io. YOUR_API_KEY i eksemplet nedenfor er ikke en gyldig nøkkel. Å importere modulen eller kjøre den uten et eksplisitt kjørealternativ sender ingen forespørsel.
node --version
export GENDERAPI_API_KEY="YOUR_API_KEY"Send én JSON POST med eksplisitte KI-regler
Lagre koden som single.mjs ved siden av den nedlastede modulen, og kjør node single.mjs. Den sender V2-feltene type og value med options.ai_mode: off. Les estimatet i response.data og opplysningene om forespørselen og belastningen i response.meta.
Et fullført oppslag koster 1 kreditt også når gender er null; eksempelnavnet garanterer ikke et bestemt resultat.
Hjelpemodulen krever en eksplisitt KI-modus og en heksadesimal nøkkel på 24 tegn og kontrollerer deretter at meta.access.mode er api_key. Et vellykket svar fra prøveperioden gir en feil om at tilgangsmodusen ikke stemmer, i stedet for å fortsette i det stille. Serveren kan allerede ha brukt en kreditt fra prøveperioden før hjelpemodulen oppdager avviket.
import { predict, GenderAPIError } from "./genderapi-v2.mjs";
try {
const response = await predict({
type: "name", value: "Alice", options: { ai_mode: "off" },
});
const result = response.data;
console.log(result.result_status, result.gender);
console.log(result.confidence, result.confidence_kind);
console.log(response.meta.usage);
} catch (error) {
if (!(error instanceof GenderAPIError)) throw error;
// Do not log error.body: it can include the submitted value.
console.error("Request failed:", error.code, error.requestId);
process.exitCode = 1;
}Lagre resultatet sammen med grunnlaget
En utledet tilknytning er ikke det kjønnet en person selv har oppgitt. Lagre de opprinnelige inndataene, grunnlaget som ble returnert, og det personen selv har oppgitt, hver for seg. Et ukjent resultat er et gyldig resultat og bør ikke bli en gjettet kategori i applikasjonen din.
| Felt | Bruk |
|---|---|
data.gender / data.result_status | Bruk male eller female bare sammen med identified. Ved et ukjent resultat beholder du den opprinnelige JSON-verdien null. |
data.name / data.match | Kontroller det returnerte navnet og den valgte kandidaten. Et treff på en delstreng beviser ikke at inndataene tilhører en person med dette navnet. |
data.confidence / data.confidence_kind | Konfidensen er en verdi fra 0 til 1 eller null. observed_frequency bygger på lagrede frekvenser; model_reported er en verdi fra KI. Evaluer tersklene separat for hver type. |
data.source / data.sample_count | Skill mellom dataset, ai og none. KI-resultater har ingen lagret utvalgsstørrelse. En utvalgsstørrelse er ikke en målt nøyaktighet. |
meta.access.mode | Kontroller at api_key rapporteres i en integrasjon med konto. Nøkler som mangler eller ikke gjenkjennes, kan i stedet bruke den delte IP-prøveperioden. |
meta.usage | Les charged_credits og billing_status. Et vellykket ukjent resultat belastes. Et tapt svar beviser ikke at forespørselen var gratis. |
Behandle en blandet samleforespørsel og behold id-en for hver rad
GenderAPI.io V2 bruker POST https://api.genderapi.io/api/v2/gender/batch for blandede samleforespørsler: høyst 50 elementer med en kontonøkkel eller 10 i IP-prøveperioden. Disse eksemplene krever en kontonøkkel. Gi hvert element en stabil, unik id og en eksplisitt KI-modus. En samleforespørsel kan kombinere navn, e-postadresser og brukernavn, og hvert element kan ha en valgfri landkontekst.
Les hvert element i data og sammendraget i meta.summary. Et HTTP 200-svar kan inneholde feil for enkeltelementer; en samleforespørsel der alle elementene mislyktes, kan gi et Problem-svar på øverste nivå som inneholder resultatene. Vellykkede ukjente resultater telles som succeeded. Med den opprinnelige index og id kan du knytte hvert utfall til riktig kilderad.
Ved større jobber deler du inndataene i grupper på høyst 50 og sender dem først etter hverandre. Lagre hvert svar og forbruket før du går videre. Stopp ved feil i overføringen, feil med kontoen eller en belastning som ikke er bekreftet, og stem av den gjeldende gruppen. Legg bare til parallelle forespørsler etter at du har kontrollert grensene for kontoen din; den største tillatte samleforespørselen er ingen garanti for kapasitet.
import { predictBatch, GenderAPIError } from "./genderapi-v2.mjs";
const items = [
{ id: "row-1", type: "name", value: "Alice", options: { ai_mode: "off" } },
{ id: "row-2", type: "email", value: "alex@example.com", options: { ai_mode: "off" } },
{ id: "row-3", type: "username", value: "sample_handle", options: { ai_mode: "off" } },
];
try {
const response = await predictBatch(items);
for (const item of response.data) {
if (item.error) {
console.log(item.id, "failed", item.error.code);
} else {
console.log(item.id, item.data.result_status, item.data.gender);
}
}
console.log(response.meta.summary, response.meta.usage);
if (response.meta.summary.failed > 0) process.exitCode = 2;
} catch (error) {
if (!(error instanceof GenderAPIError)) throw error;
// error.body can retain an all-failed batch and billing details.
console.error("Batch needs review:", error.code, error.requestId);
process.exitCode = 1;
}Bestem når KI skal brukes
forceToGenderize er valgfritt for navn, e-postadresser og brukernavn. Når det er aktivert, utelater du ai_mode eller bruker fallback; off og always kan ikke kombineres med dette alternativet og gir 422. En positiv startsaldo er nok til å starte en forespørsel, selv om den endelige belastningen gjør saldoen negativ.
Kallenavnmodus kan returnere et kjønn sammen med name: null. Den kan også gi et ukjent resultat. Verken vanlig KI-reserve eller tolkning av kallenavn garanterer et riktig svar eller en verdi som ikke er null.
Denne hjelpemodulen for JavaScript krever alltid options.ai_mode. For tolkning av kallenavn sender du forceToGenderize: true sammen med options: { ai_mode: 'fallback' }.
| Alternativ i forespørselen | Virkemåte | Kreditter for et vellykket oppslag |
|---|---|---|
| options.ai_mode: off | Bruker bare datasettet. | 1, også for et ukjent resultat |
| options.ai_mode: fallback | Søker først i datasettet og bruker deretter vanlig KI hvis det ikke returneres et kjønn. Dette er standard for enkeltforespørsler. | 1 totalt, inkludert KI-reserve |
| options.ai_mode: always | Bruker KI direkte. | 2 |
| forceToGenderize: true | Søker først i datasettet og lar deretter KI tolke et personlig kallenavn eller alias, selv uten et ekte fornavn. | 1 for et resultat fra datasettet; 2 totalt hvis KI brukes |
Bestem hva du gjør etter en feil
Eksemplene sender hver operasjon én gang. De prøver ikke på nytt automatisk: En ny innsending er en ny operasjon som belastes. Et tidsavbrudd eller en tilkoblingsfeil betyr at klienten ikke fikk et fullstendig svar; det beviser ikke at serveren stoppet, eller at ingen kreditter ble belastet.
Lagre forespørsels-ID-en og belastningsstatusen som returneres, sammen med posten for jobben. Feilobjektet beholder svaret slik at det kan undersøkes kontrollert, men det kan inneholde de opprinnelige inndataene; ikke skriv hele objektet, svaret eller API-nøkkelen til vanlige logger.
| Utfall | Beslutning i applikasjonen |
|---|---|
| Vellykket ukjent resultat | Behold null, reason og usage. Dette er et fullført resultat som er belastet, ikke en mislykket rad som skal sendes automatisk på nytt. |
| Valideringsfeil 422 | Rett inndataene som feltene i Problem Details peker på, før du sender en ny forespørsel. |
| 401 / 403 | Kontroller tilgangen til kontoen eller de tilgjengelige kredittene. Å sende den samme forespørselen gjentatte ganger løser ikke det underliggende problemet. |
| 429 | Følg Retry-After når den finnes. Bekreft feilen og belastningsstatusen, og planlegg deretter et bevisst nytt forsøk senere. |
| Nettverksfeil, tidsavbrudd eller svar som ikke kan leses | Registrer at resultatet og belastningen ikke er bekreftet. Stem av før du sender på nytt; klienten kan ikke avbryte arbeid som serveren allerede har fullført. |
| billing_status: unconfirmed | charged_credits og remaining_credits kan være null. Kontakt kundestøtte med request_id før et nytt forsøk; ikke erstatt null med 0. |
| Noen elementer i samleforespørselen mislyktes | Lagre de fullførte elementene først. Gå gjennom de mislykkede elementene og belastningen for dem; send bare de egnede feilene på nytt, ikke hele samleforespørselen. |
Forstå tidsavbruddet for fetch og kontrollene av svaret
Standard tidsavbrudd er 10 000 millisekunder med AbortSignal.timeout, inkludert lesing av innholdet i svaret. At klienten avbryter, beviser ikke at behandlingen eller belastningen på serveren stoppet. Modulen slår av omdirigeringer, skiller HTTP-feil fra svar som ikke kan leses, og prøver aldri på nytt automatisk.
Tester med syntetiske overføringssvar dekker vellykkede svar, ukjente resultater, delvis vellykkede samleforespørsler, reserveløsninger for påloggingsopplysninger og feil. Testene trenger ingen ekte prediksjoner eller operasjoner med kreditter; de er ikke en måling av tilgjengelighet eller nøyaktighet i drift. Hver valgfri demokommando nedenfor sender sin egen forespørsel, som belastes.
node genderapi-v2.mjs --run-single
# Run separately to submit another billable sample batch:
node genderapi-v2.mjs --run-batchOfte stilte spørsmål
Kan jeg lime inn denne koden i JavaScript som kjører i nettleseren?
Behold koden på serveren din. En pakke for nettleseren eksponerer API-nøkkelen for brukerne. Kall din egen autentiserte backend fra nettleseren, og la denne backenden sende forespørselen til GenderAPI.io.
Belastes et ukjent resultat med kreditter?
Ja. Et vellykket vanlig oppslag koster 1 kreditt også når gender er null. Vanlig KI-reserve er inkludert i denne kreditten. Modusen always koster 2; forceToGenderize koster 1 for et resultat fra datasettet eller 2 når KI brukes.
Prøver eksemplet en mislykket forespørsel på nytt?
Nei. Hver nye forespørsel er en selvstendig operasjon. Kontroller feilen, resultatene for hvert element og belastningsstatusen før du bestemmer deg for å sende på nytt. Et manglende svar beviser ikke at det forrige forsøket var gratis.
Er dette en pakke jeg må installere?
Nei. Last ned eksemplet direkte fra denne veiledningen hos GenderAPI.io. Det er ikke avhengig av tredjepartspakker når det kjøres, og det er ikke et separat publisert SDK. Hvis du foretrekker en vedlikeholdt pakke, kaller de offisielle SDK-ene fra GenderAPI.io det samme V2-API-et: pip install genderapi for Python eller npm install genderapi for JavaScript. Gå gjennom og tilpass eksemplet til applikasjonen din; dokumentasjonen for GenderAPI.io V2 er fortsatt API-kontrakten.
Kilder
API-dokumentasjonen definerer forespørsler og svar. Dokumentasjonen for kjøremiljøet beskriver HTTP-verktøyene som brukes.