POST:n ja PUT:n eron ymmärtäminen HTTP:ssä

Node.js

Johdatus HTTP-menetelmiin

Kun työskentelet RESTful-verkkopalveluiden kanssa, on tärkeää ymmärtää HTTP-menetelmien erot, erityisesti POST ja PUT. Näitä menetelmiä käytetään usein resurssien luomiseen ja päivittämiseen, mutta ne toimivat eri tavoilla. Niiden ainutlaatuisten tarkoitusten ja asianmukaisten sovellusten ymmärtäminen voi auttaa varmistamaan, että API-suunnittelusi on sekä tehokas että intuitiivinen.

POST-testiä käytetään yleensä uusien resurssien luomiseen, kun taas PUT:ia käytetään resurssin luomiseen tai korvaamiseen tietyssä URI:ssa. Tällä erottelulla, vaikka se onkin hienovarainen, on tärkeitä vaikutuksia resurssien hallintaan ja vuorovaikutukseen verkkopalveluympäristössä.

Komento Kuvaus
express() Alustaa Express-sovelluksen.
app.use(express.json()) Väliohjelmisto saapuvien JSON-pyyntöjen jäsentämiseksi.
app.post() Määrittää POST-reitin resurssien luomista varten.
app.put() Määrittää PUT-reitin resurssien päivittämistä tai korvaamista varten.
req.body Käyttää pyynnön rungossa lähetettyä JSON-dataa.
res.status().send() Asettaa HTTP-tilakoodin ja lähettää vastauksen asiakkaalle.
fetch() Suorittaa HTTP-pyyntöjä käyttöliittymästä.
method: 'POST' Määrittää noutopyynnössä käytettävän HTTP-menetelmän.
headers: { 'Content-Type': 'application/json' } Asettaa pyyntöotsikot osoittamaan JSON-sisältöä.
body: JSON.stringify(data) Muuntaa JavaScript-objektitiedot pyynnön rungon JSON-merkkijonoksi.

POST- ja PUT-komentosarjojen toiminnallisuuden ymmärtäminen

Node.js:ää ja Expressiä käyttävä taustaohjelma osoittaa, kuinka HTTP-menetelmiä käsitellään ja resurssien hallintaa varten. The -toiminto alustaa Express-sovelluksen, kun taas app.use(express.json()) väliohjelmistoa käytetään saapuvien JSON-pyyntöjen jäsentämiseen. The menetelmä määrittää reitin resurssin luomiseksi, josta resurssitiedot poimitaan ja tallennettu palvelinpuolen objektiin. Vastaus lähetetään takaisin asiakkaalle tilakoodilla 201, joka osoittaa, että resurssi on luotu onnistuneesti.

The menetelmä määrittää reitin olemassa olevan resurssin päivittämiseksi tai korvaamiseksi. Tämä menetelmä käyttää resurssitunnusta kohteesta ja tiedot kohteesta päivittääksesi palvelinpuolen objektin. Vastaus lähetetään takaisin tilakoodilla 200, mikä osoittaa, että resurssin päivitys onnistui. Käyttöliittymän komentosarja käyttää Fetch API:ta näiden HTTP-pyyntöjen suorittamiseen. The fetch() toimintoa käytetään sopivilla menetelmillä ( ja ) ja otsikot ovat vuorovaikutuksessa taustajärjestelmän kanssa varmistaen, että resurssit luodaan ja päivitetään oikein asiakaspuolelta.

Taustaohjelma Node.js:n ja Expressin avulla

Tämä komentosarja osoittaa, kuinka POST- ja PUT-menetelmiä käytetään Node.js- ja Express-taustajärjestelmässä

const express = require('express');
const app = express();
app.use(express.json());

let resources = {};

app.post('/resource', (req, res) => {
  const id = generateId();
  resources[id] = req.body;
  res.status(201).send({ id, ...req.body });
});

app.put('/resource/:id', (req, res) => {
  const id = req.params.id;
  resources[id] = req.body;
  res.status(200).send({ id, ...req.body });
});

function generateId() {
  return Math.random().toString(36).substr(2, 9);
}

app.listen(3000, () => {
  console.log('Server is running on port 3000');
});

Käyttöliittymän komentosarja JavaScriptiä ja Fetch APIa käyttävällä

Tämä skripti osoittaa, kuinka tehdä POST- ja PUT-pyyntöjä käyttöliittymäsovelluksesta JavaScriptin ja Fetch API:n avulla

const createResource = async (data) => {
  const response = await fetch('http://localhost:3000/resource', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json'
    },
    body: JSON.stringify(data)
  });
  return response.json();
};

const updateResource = async (id, data) => {
  const response = await fetch(`http://localhost:3000/resource/${id}`, {
    method: 'PUT',
    headers: {
      'Content-Type': 'application/json'
    },
    body: JSON.stringify(data)
  });
  return response.json();
};

// Example usage
createResource({ name: 'New Resource' }).then(data => console.log(data));
updateResource('existing-id', { name: 'Updated Resource' }).then(data => console.log(data));

Resurssien luomisen tutkiminen RESTful-sovellusliittymissä

Kun suunnittelet RESTful-sovellusliittymiä, valitse seuraavista ja menetelmät resurssien luomiseen riippuvat käyttötapauksesta ja halutusta käyttäytymisestä. The -menetelmää käytetään uuden alemman tason resurssin luomiseen määritetyn resurssin alle. Se on ei-idempotentti, mikä tarkoittaa, että useat identtiset POST-pyynnöt johtavat useiden resurssien luomiseen. Tämä menetelmä on ihanteellinen, kun palvelin määrittää uuden resurssin URI:n.

Toisaalta, menetelmä voi luoda tai korvata resurssin tietyssä URI:ssa. Se on idempotentti, mikä tarkoittaa, että useat identtiset PUT-pyynnöt tuottavat saman tuloksen kuin yksi pyyntö. Tämä menetelmä sopii skenaarioihin, joissa asiakas määrittää luotavan tai päivitettävän resurssin URI:n. Näiden erojen ymmärtäminen auttaa suunnittelemaan sovellusliittymiä, jotka vastaavat odotettua käyttäytymistä ja vaatimuksia.

  1. Mikä on POST-menetelmän ensisijainen käyttötarkoitus?
  2. The -menetelmää käytetään ensisijaisesti uuden resurssin luomiseen tietyn resurssin alaisena.
  3. Mikä on PUT-menetelmän ensisijainen käyttötarkoitus?
  4. The -menetelmää käytetään resurssin luomiseen tai korvaamiseen tietyssä URI:ssa.
  5. Onko POST idempotentti?
  6. Ei, menetelmä ei ole idempotentti, mikä tarkoittaa, että useat identtiset POST-pyynnöt luovat useita resursseja.
  7. Onko PUT idempotentti?
  8. Kyllä menetelmä on idempotentinen, mikä tarkoittaa, että useat identtiset PUT-pyynnöt tuottavat saman tuloksen kuin yksi pyyntö.
  9. Milloin sinun tulee käyttää POST yli PUT:n?
  10. Käyttää kun palvelin määrittää uuden resurssin URI:n, eikä asiakkaan tarvitse määrittää sitä.
  11. Milloin sinun pitäisi käyttää PUT yli POST?
  12. Käyttää kun asiakas määrittää luotavan tai päivitettävän resurssin URI:n.
  13. Voidaanko PUT:ta käyttää resurssin päivittämiseen?
  14. Kyllä -menetelmä voi päivittää olemassa olevan resurssin, jos määritetty URI viittaa olemassa olevaan resurssiin.
  15. Voidaanko POST-testiä käyttää resurssin päivittämiseen?
  16. Sillä aikaa voi teknisesti päivittää resurssia, sitä käytetään yleensä uusien resurssien luomiseen.
  17. Mitä tapahtuu, jos PUT-pyynnön URI:tä ei ole olemassa?
  18. Jos URI-osoitetta ei ole olemassa, menetelmä voi luoda uuden resurssin kyseiselle URI:lle.
  19. Mikä on onnistuneen POST-pyynnön vastauksen tilakoodi?
  20. Onnistunut pyyntö palauttaa yleensä tilakoodin 201 Luotu.

Tärkeimmät tiedot POST:lle ja PUT:lle HTTP:ssä

Sopivan HTTP-menetelmän valitseminen resurssien luomiseen on välttämätöntä tehokkaiden ja vaikuttavien RESTful-sovellusliittymien rakentamiseksi. The menetelmä soveltuu parhaiten uusien resurssien luomiseen, jossa palvelin määrittää resurssin URI:n. Se on ei-idempotentti, mikä tarkoittaa, että useat pyynnöt voivat johtaa useiden resurssien luomiseen. Sitä vastoin menetelmä on ihanteellinen, kun asiakas määrittää resurssin URI:n ja sitä voidaan käyttää resurssien luomiseen tai päivittämiseen. Se on idempotentti ja varmistaa johdonmukaiset tulokset jopa toistuvista pyynnöistä.

Näiden vivahteiden ymmärtäminen auttaa kehittäjiä suunnittelemaan sovellusliittymiä, jotka vastaavat odotettua käyttäytymistä ja vaatimuksia. Esitetyt esimerkit osoittavat, kuinka nämä menetelmät voidaan ottaa käyttöön taustajärjestelmässä Node.js:ää ja Expressiä käyttäen varmistaen, että resursseja hallitaan tehokkaasti sekä palvelin- että asiakaspuolelta.

Yhteenvetona voidaan todeta, että sekä POST- että PUT-menetelmillä on erilliset roolit resurssien luomisessa ja hallinnassa RESTful API:issa. POST on ihanteellinen uusien resurssien luomiseen ilman URI:n määrittämistä, kun taas PUT on parempi resurssien luomiseen tai päivittämiseen tietyssä URI:ssa. Ymmärtämällä ja käyttämällä näitä menetelmiä asianmukaisesti kehittäjät voivat suunnitella sovellusliittymiä, jotka ovat kestäviä, luotettavia ja RESTful-arkkitehtuurin periaatteiden mukaisia.