Takana ovat ajat, jolloin sinun piti luoda erillinen taustaohjelma verkkosivustollesi. Next.js-tiedostopohjaisen API-reitityksen avulla voit helpottaa elämääsi kirjoittamalla API-liittymäsi Next.js-projektiin.

Next.js on React-metakehys, jossa on ominaisuuksia, jotka yksinkertaistavat tuotantovalmiiden verkkosovellusten rakentamista. Näet, kuinka REST-sovellusliittymä rakennetaan Next.js: ssä ja kuinka voit käyttää kyseisen API: n dataa Next.js-sivulla.

Luo Next.js-projekti käyttämällä create-next-app-ohjelmaa

Voit luoda uuden Next.js-projektin käyttämällä create-next-app CLI-työkalua. Se asentaa tarvittavat paketit ja tiedostot, jotta pääset alkuun Next.js-sovelluksen rakentamisessa.

Suorita tämä komento päätteessä luodaksesi uuden Next.js-kansion nimeltä api-routes. Saatat saada kehotteen asentaa create-next-app.

npx luoda-Seuraava-sovellus api-reitit

Kun komento on valmis, avaa api-routes-kansio ja aloita API-reittien luominen.

API-reititys Next.js: ssä

API-reitit toimivat palvelimella ja niillä on monia käyttötarkoituksia, kuten käyttäjätietojen tallentaminen tietokantaan tai tietojen hakeminen API: sta nostamatta

CORS-käytäntövirhe.

Next.js: ssä sinun on luotava API-reitit /pages/api-kansioon. Next.js luo API-päätepisteet jokaiselle tämän kansion tiedostolle. Jos lisäät user.js: n hakemistoon /pages/api, Next.js luo päätepisteen osoitteessa http://localhost: 3000/api/käyttäjä.

Next.js API -perusreitillä on seuraava syntaksi.

viedäoletuksenatoimintokäsittelijä(req, res) {
res.status (200).json({ nimi: 'John Doe' })
}

Käsittelijätoiminto on vietävä, jotta se toimii.

API-reittien luominen

Luo uusi tiedosto nimeltä todo.js /pages/api kansio, jos haluat lisätä API-reitin tehtäväkohteille.

Todo-tietokannan pilkkaaminen

Jotta saat tehtävät, sinun on luotava GET-päätepiste. Yksinkertaisuuden vuoksi. Tämä opetusohjelma käyttää joukkoa tehtäväkohteita tietokannan sijaan, mutta voit käyttää tietokantaa, kuten MongoDB tai MySQL.

Luo tehtäväkohteet todo.js-tiedostoon sovelluksesi juurikansiossa ja lisää sitten seuraavat tiedot.

viedäkonst todos = [
{
id: 1,
tehdä: "Tee jotain mukavaa jollekulle, josta välitän",
valmistunut: totta,
käyttäjätunnus: 26,
},
{
id: 2,
tehdä: "Opettele ulkoa viisikymmentä osavaltiota ja niiden pääkaupungit",
valmistunut: väärä,
käyttäjätunnus: 48,
},
// muut tehtävät
];

Nämä tehtäväkohteet ovat DummyJSON-verkkosivustolta, a REST API valedataa varten. Tästä löydät tarkat tiedot DummyJSON todos -päätepiste.

Luo seuraavaksi API-reitti sisään /pages/api/todos.js ja lisää käsittelijätoiminto.

tuonti { tehtävät } alkaen "../../tehdä";

viedätoimintokäsittelijä(req, res) {
konst { menetelmä } = req;

vaihtaa (menetelmä) {
tapaus "SAADA":
res.Tila(200).json(todos);
tauko;
tapaus "LÄHETTÄÄ":
konst { tehtävä, valmis } = req.body;
todos.työntää({
id: todos.pituus + 1,
tehdä,
valmis,
});
res.Tila(200).json(todos);
tauko;
oletuksena:
res.setHeader("Sallia", ["SAADA", "LÄHETTÄÄ"]);
res.status(405).end(`Menetelmä ${method} Ei sallittu`);
tauko;
}
}

Tämä reitti käsittelee GET- ja POST-päätepisteitä. Se palauttaa kaikki GET-pyynnön tehtävät ja lisää tehtävätietokantaan POST-pyynnön tehtävät. Muissa menetelmissä käsittelijä palauttaa virheen.

Kuluttavat API-reitit käyttöliittymässä

Olet luonut API-päätepisteen, joka palauttaa JSON-objektin, joka sisältää joukon tehtäviä.

Käytä API: a luomalla fetchTodos-niminen toiminto, joka hakee tiedot API-päätepisteestä. Funktio käyttää hakumenetelmää, mutta voit myös käytä Axiosta API-pyyntöjen tekemiseen. Kutsu sitten tämä toiminto, kun napsautat painiketta.

tuonti Pää alkaen "seuraava/pää";
tuonti { useState } alkaen "reagoi";

viedäoletuksenatoimintoKoti() {
konst [todos, settodos] = useState([]);

konst fetchTodos = asynk () => {
konst vastaus = odottaa hae("/api/todos");
konst data = odottaa vastaus.json();
settodos (data);
};

palata (
<div className={styles.container}>
<Pää>
<otsikko>Luo seuraava sovellus</title>
<metanimi="kuvaus" sisältö="Luo seuraava sovellus" />
<linkki rel="kuvake" href="/favicon.ico" />
</Head>
<pää>
<button onClick={fetchTodos}>Hanki tehtävät</button>
<ul>
{todos.map((tehtävä) => {
palata (
<li
style={{ color: `${todo.completed? "vihreä": "punainen"}` }}
key={todo.id}
>
{todo.todo}:{todo.completed}.
</li>
);
})}
</ul>
</main>
</div>
);
}

Tämän katkelman luettelossa näkyvät tehtäväkohteet, kun ne noudetaan.

Luo POST-päätepisteelle uusi toiminto nimeltä saveTodo, joka tekee POST-pyynnön API: lle. Hakupyyntö tallentaa uuden tehtäväkohteen leipätekstiin ja palauttaa kaikki tehtäväkohteet, mukaan lukien uuden. SaveTodo-toiminto tallentaa ne sitten todos-tilaan.

konst saveTodo = asynk () => {
konst vastaus = odottaa hae("/api/todos", {
menetelmä: "LÄHETTÄÄ",
runko: JSON.stringify (uusiTodo),
otsikot: {
"Sisältötyyppi": "sovellus/json",
},
});

konst data = odottaa vastaus.json();
settodos (data);
};

Luo sitten lomake, jossa on tekstinsyöttöpalkki vastaanottaaksesi uuden tehtäväkohteen. Tämän lomakkeen lähetyskäsittelijätoiminto kutsuu saveTodo-funktiota.

tuonti Pää alkaen "seuraava/pää";
tuonti { useReducer, useState } alkaen "reagoi";
tuonti tyylejä alkaen "../styles/Home.module.css";

viedäoletuksenatoimintoKoti() {
konst [todos, settodos] = useState([]);

konst [newTodo, setnewTodo] = useState({
tehdä: "",
valmistunut: väärä,
});

konst fetchTodos = asynk () => {
// fetchTodos
};
konst saveTodo = asynk (e) => {
konst vastaus = odottaa hae("/api/todos", {
menetelmä: "LÄHETTÄÄ",
runko: JSON.stringify (uusiTodo),
otsikot: {
"Sisältötyyppi": "sovellus/json",
},
});

konst data = odottaa vastaus.json();
settodos (data);
};

konst HandChange = (e) => {
setnewTodo({
tehdä: e.kohde.arvo,
});
};

konst handleSubmit = (e) => {
e.preventDefault();
saveTodo();
setnewTodo({
tehdä: '',
});
};

palata (
<div className={styles.container}>
<Pää>
<otsikko>Luo seuraava sovellus</title>
<metanimi="kuvaus" sisältö="Luo seuraava sovellus" />
<linkki rel="kuvake" href="/favicon.ico" />
</Head>
<pää>
// Hakee tehtäväkohteet napsautettaessa
<button onClick={fetchTodos}>Hanki tehtävät</button>

// Tallentaa uuden tehtäväkohteen lähetyksen yhteydessä
<lomake onSubmit={handleSubmit}>
<syöttötyyppi="teksti" onChange={handleChange} value={newTodo.todo} />
</form>
<ul>
{// listaa tehtävät}
</ul>
</main>
</div>
);
}

Käsittelijä lisää uuden tehtävän tietokantaan aina, kun käyttäjä lähettää lomakkeen. Lisäksi tämä toiminto päivittää todos-arvon API: lta saatujen tietojen avulla, mikä puolestaan ​​lisää uuden tehtäväkohteen luetteloon.

API-reititys on vain yksi Next.js: n vahvuuksista

Olet nähnyt, kuinka rakennat ja käytät Next.js API -reittiä. Nyt voit luoda täyden pinon sovelluksen poistumatta Next.js-projektikansiosta. API-reititys on yksi Next.js: n monista eduista.

Next.js tarjoaa myös suorituskyvyn optimointeja, kuten koodin jakamista, laiskalatausta ja sisäänrakennettua CSS-tukea. Jos olet rakentamassa verkkosivustoa, jonka on oltava nopea ja SEO-ystävällinen, sinun kannattaa harkita Next.js: ää.