Pidä integraatio Node.js-palvelimellasi
Tämä opas kutsuu GenderAPI.io V2:n päätepistettä https://api.genderapi.io/api/v2/gender käyttäen API-avainta Bearer-tunnisteena. Käytä Node.js:n versiota 22 tai uudempaa ja lataa genderapi-v2.mjs projektiisi. Tämä ES-moduuli käyttää sisäänrakennettuja fetch- ja AbortSignal.timeout-toimintoja; npm-pakettia ei tarvita. Tiedostopäätteen .mjs ansiosta voit tuoda moduulin toisesta ES-moduulista muuttamatta package.json-tiedostoa.
Aseta GENDERAPI_API_KEY palvelimen ympäristöön. Älä sisällytä avainta Reactiin, Vueen tai selaimessa suoritettavaan JavaScriptiin. Anna oman palvelimesi todentaa sovelluksen käyttäjät ja kutsua GenderAPI.io:ta. Alla olevan esimerkin YOUR_API_KEY ei ole kelvollinen avain. Moduulin tuominen tai sen suorittaminen ilman erikseen annettua suoritusasetusta ei lähetä pyyntöä.
node --version
export GENDERAPI_API_KEY="YOUR_API_KEY"Lähetä yksi JSON POST -pyyntö erikseen määritetyillä tekoälysäännöillä
Tallenna koodi nimellä single.mjs ladatun moduulin viereen ja suorita node single.mjs. Se lähettää V2:n kentät type ja value asetuksella options.ai_mode: off. Lue arvio kentästä response.data sekä pyynnön ja veloituksen tiedot kentästä response.meta.
Valmis haku maksaa 1 krediitin myös silloin, kun gender on null; esimerkkinimi ei takaa tiettyä tulosta.
Apumoduuli edellyttää erikseen määritettyä tekoälytilaa ja 24-merkkistä heksadesimaalista avainta ja tarkistaa sen jälkeen, että meta.access.mode on api_key. Kokeilun onnistunut vastaus aiheuttaa käyttöoikeustilan ristiriitaa koskevan virheen sen sijaan, että käsittely jatkuisi huomaamatta. Palvelin on voinut jo käyttää kokeilun krediitin ennen kuin apumoduuli havaitsee ristiriidan.
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;
}Säilytä tulos ja sen perusteet yhdessä
Päätelty yhteys ei ole henkilön itse ilmoittama sukupuoli. Säilytä alkuperäinen syöte, palautetut perusteet ja henkilön itse antamat tiedot erillään. Tuntematon tulos on kelvollinen tulos, eikä siitä pidä tehdä sovelluksessasi arvattua luokkaa.
| Kenttä | Miten sitä käytetään |
|---|---|
data.gender / data.result_status | Käytä arvoa male tai female vain, kun tulos on identified. Säilytä alkuperäinen JSON null -arvo, kun tulos on unknown. |
data.name / data.match | Tarkista palautettu nimi ja valittu ehdokas. Osuma merkkijonon osaan ei todista, että syöte kuuluu henkilölle, jolla on kyseinen etunimi. |
data.confidence / data.confidence_kind | Luottamusarvo on väliltä 0–1 tai null. observed_frequency perustuu tallennettuihin määriin; model_reported on tekoälyn pistemäärä. Arvioi kynnysarvot kummallekin tyypille erikseen. |
data.source / data.sample_count | Erota arvot dataset, ai ja none. Tekoälytuloksilla ei ole tallennettua otoskokoa. Otoskoko ei ole mitattu tarkkuus. |
meta.access.mode | Varmista tilin integraatiossa, että arvo on api_key. Puuttuva tai tunnistamaton avain voi sen sijaan käyttää yhteistä IP-kokeilua. |
meta.usage | Lue charged_credits ja billing_status. Onnistunut tuntematon tulos veloitetaan. Kadonnut vastaus ei osoita, että pyyntö oli maksuton. |
Käsittele sekalainen eräpyyntö ja säilytä kunkin rivin id
GenderAPI.io V2 käyttää sekalaisiin eräpyyntöihin päätepistettä POST https://api.genderapi.io/api/v2/gender/batch: enintään 50 kohdetta tilin avaimella tai 10 IP-kokeilussa. Nämä esimerkit edellyttävät tilin avainta. Anna jokaiselle kohteelle pysyvä, yksilöllinen id ja erikseen määritetty tekoälytila. Eräpyyntö voi yhdistää nimiä, sähköpostiosoitteita ja käyttäjänimiä, ja jokaisella kohteella voi olla valinnainen maakonteksti.
Lue jokainen data-kentän kohde ja yhteenveto kentästä meta.summary. HTTP 200 -vastaus voi sisältää kohdekohtaisia virheitä; eräpyyntö, jonka kaikki kohteet epäonnistuivat, voi palauttaa ylätason Problem-vastauksen, joka sisältää tulokset. Onnistuneet tuntemattomat tulokset lasketaan arvoon succeeded. Alkuperäisten index- ja id-arvojen avulla voit liittää jokaisen lopputuloksen oikeaan lähderiviin.
Jaa suuremmissa töissä syötteet enintään 50 kohteen ryhmiin ja lähetä ne aluksi peräkkäin. Tallenna jokainen vastaus ja sen käyttötiedot ennen kuin jatkat. Pysähdy siirtovirheisiin, tiliin liittyviin virheisiin tai vahvistamattomaan veloitukseen ja täsmäytä nykyinen ryhmä. Lisää rinnakkaisia pyyntöjä vasta, kun olet tarkistanut tilisi rajat; suurin sallittu eräpyynnön koko ei takaa läpäisykykyä.
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;
}Päätä, milloin tekoälyä käytetään
forceToGenderize on valinnainen nimille, sähköpostiosoitteille ja käyttäjänimille. Kun se on käytössä, jätä ai_mode pois tai käytä arvoa fallback; off ja always ovat ristiriidassa sen kanssa ja palauttavat 422-virheen. Positiivinen alkusaldo riittää pyynnön aloittamiseen, vaikka lopullinen veloitus painaisi saldon negatiiviseksi.
Lempinimitila voi palauttaa sukupuolen, vaikka tuloksessa on name: null. Se voi myös palauttaa tuntemattoman tuloksen. Tavallinen tekoäly varalla ja lempinimipäättely eivät takaa oikeaa vastausta eivätkä muuta kuin null-arvoista vastausta.
Tämä JavaScript-apumoduuli edellyttää aina options.ai_mode-arvoa. Lempinimipäättelyä varten lähetä forceToGenderize: true yhdessä asetuksen options: { ai_mode: 'fallback' } kanssa.
| Pyynnön asetus | Toiminta | Krediitit onnistuneesta hausta |
|---|---|---|
| options.ai_mode: off | Käyttää vain tietoaineistoa. | 1, myös tuntemattomasta tuloksesta |
| options.ai_mode: fallback | Hakee ensin tietoaineistosta ja käyttää tavallista tekoälyä, jos sukupuolta ei saada. Tämä on yksittäisen pyynnön oletus. | Yhteensä 1, tekoäly varalla mukaan lukien |
| options.ai_mode: always | Käyttää suoraan tekoälyä. | 2 |
| forceToGenderize: true | Hakee ensin tietoaineistosta ja sallii sitten tekoälyn tulkita henkilökohtaisen lempinimen tai aliaksen myös ilman todellista etunimeä. | 1 tietoaineistosta ratkaistusta tuloksesta; yhteensä 2, jos tekoälyä käytetään |
Päätä, mitä teet virheen jälkeen
Esimerkit lähettävät jokaisen toiminnon kerran. Ne eivät yritä uudelleen automaattisesti: uusi lähetys on uusi veloitettava toiminto. Aikakatkaisu tai yhteysvirhe tarkoittaa, että asiakasohjelma ei saanut täydellistä vastausta; se ei todista, että palvelin lopetti käsittelyn tai että krediittejä ei veloitettu.
Tallenna palautettu pyynnön tunniste ja veloituksen tila työn tietueen yhteyteen. Virheobjekti säilyttää vastauksen hallittua tarkastelua varten, mutta se voi sisältää alkuperäisen syötteen; älä kirjoita koko objektia, vastausta tai API-avainta tavallisiin lokeihin.
| Lopputulos | Päätös sovelluksessa |
|---|---|
| Onnistunut tuntematon tulos | Säilytä null, reason ja usage. Tämä on valmis, veloitettu tulos eikä epäonnistunut rivi, joka lähetetään automaattisesti uudelleen. |
| Validointivirhe 422 | Korjaa Problem Details -kenttien osoittamat syötteet ennen uuden pyynnön lähettämistä. |
| 401 / 403 | Tarkista tilin käyttöoikeus tai käytettävissä olevat krediitit. Saman pyynnön lähettäminen toistuvasti ei ratkaise taustalla olevaa ongelmaa. |
| 429 | Noudata Retry-After-otsaketta, kun se on mukana. Vahvista virhe ja veloituksen tila ja ajoita sitten harkittu uusi yritys myöhemmäksi. |
| Verkkovirhe, aikakatkaisu tai lukukelvoton vastaus | Kirjaa, että tulosta ja veloitusta ei ole vahvistettu. Täsmäytä ennen uutta lähetystä; asiakasohjelma ei voi perua palvelimen jo valmiiksi tekemää työtä. |
| billing_status: unconfirmed | charged_credits ja remaining_credits voivat olla null. Ota yhteyttä tukeen ja ilmoita request_id ennen uutta yritystä; älä korvaa null-arvoa nollalla. |
| Osa eräpyynnön kohteista epäonnistui | Tallenna valmiit kohteet ensin. Käy epäonnistuneet kohteet ja niiden veloitus läpi; lähetä uudelleen vain soveltuvat virheet, ei koko eräpyyntöä. |
Ymmärrä fetch-kutsun aikakatkaisu ja vastauksen tarkistukset
Oletusaikakatkaisu on 10 000 millisekuntia AbortSignal.timeout-toiminnolla, ja se kattaa myös vastauksen rungon lukemisen. Se, että asiakasohjelma keskeyttää pyynnön, ei todista, että palvelimen käsittely tai veloitus pysähtyi. Moduuli poistaa uudelleenohjaukset käytöstä, erottaa HTTP-virheet lukukelvottomista vastauksista eikä koskaan yritä uudelleen automaattisesti.
Synteettisiä siirtovastauksia käyttävät testit kattavat onnistuneet vastaukset, tuntemattomat tulokset, osittain onnistuneet eräpyynnöt, tunnistetietojen varavaihtoehdot ja virheet. Testit eivät tarvitse todellisia ennusteita tai krediittejä kuluttavia toimintoja; ne eivät ole tuotannon saatavuuden tai tarkkuuden mittaus. Jokainen alla oleva valinnainen demokomento lähettää oman, veloitettavan pyyntönsä.
node genderapi-v2.mjs --run-single
# Run separately to submit another billable sample batch:
node genderapi-v2.mjs --run-batchUsein kysytyt kysymykset
Voinko liittää tämän koodin selaimessa suoritettavaan JavaScriptiin?
Pidä koodi palvelimellasi. Selaimelle tehty paketti paljastaa API-avaimen käyttäjille. Kutsu selaimesta omaa, todennusta käyttävää taustapalveluasi ja anna sen lähettää pyyntö GenderAPI.io:hon.
Kuluttaako tuntematon tulos krediittejä?
Kyllä. Onnistunut tavallinen haku maksaa 1 krediitin myös silloin, kun gender on null. Tavallinen tekoäly varalla sisältyy tähän krediittiin. Tila always maksaa 2; forceToGenderize maksaa 1 tietoaineistosta ratkaistusta tuloksesta tai 2, kun tekoälyä käytetään.
Yrittääkö esimerkki epäonnistunutta pyyntöä uudelleen?
Ei. Jokainen uusi pyyntö on itsenäinen toiminto. Tarkista virhe, kohdekohtaiset tulokset ja veloituksen tila ennen kuin päätät lähettää uudelleen. Puuttuva vastaus ei todista, että edellinen yritys oli maksuton.
Onko tämä paketti, joka minun on asennettava?
Ei. Lataa esimerkki suoraan tästä GenderAPI.io-oppaasta. Se ei ole suoritusaikana riippuvainen kolmannen osapuolen paketeista, eikä se ole erikseen julkaistu SDK. Jos haluat käyttää ylläpidettyä pakettia, GenderAPI.io:n viralliset SDK:t kutsuvat samaa API V2:ta: pip install genderapi Pythonille tai npm install genderapi JavaScriptille. Tarkista ja mukauta esimerkki sovellukseesi; GenderAPI.io V2:n dokumentaatio on edelleen API-määrittely.
Lähteet
API-dokumentaatio määrittelee pyynnöt ja vastaukset. Suoritusympäristön dokumentaatio kuvaa käytetyt HTTP-työkalut.