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

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

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 POST ja PUT resurssien hallintaa varten. The express() -toiminto alustaa Express-sovelluksen, kun taas app.use(express.json()) väliohjelmistoa käytetään saapuvien JSON-pyyntöjen jäsentämiseen. The app.post() menetelmä määrittää reitin resurssin luomiseksi, josta resurssitiedot poimitaan req.body ja tallennettu palvelinpuolen objektiin. Vastaus lähetetään takaisin asiakkaalle tilakoodilla 201, joka osoittaa, että resurssi on luotu onnistuneesti.

The app.put() menetelmä määrittää reitin olemassa olevan resurssin päivittämiseksi tai korvaamiseksi. Tämä menetelmä käyttää resurssitunnusta kohteesta req.params.id ja tiedot kohteesta req.body 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ä (POST ja PUT) 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 POST ja PUT menetelmät resurssien luomiseen riippuvat käyttötapauksesta ja halutusta käyttäytymisestä. The POST -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, PUT 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.

Usein kysyttyjä kysymyksiä POST:ista ja PUT:ista HTTP:ssä

  1. Mikä on POST-menetelmän ensisijainen käyttötarkoitus?
  2. The POST -menetelmää käytetään ensisijaisesti uuden resurssin luomiseen tietyn resurssin alaisena.
  3. Mikä on PUT-menetelmän ensisijainen käyttötarkoitus?
  4. The PUT -menetelmää käytetään resurssin luomiseen tai korvaamiseen tietyssä URI:ssa.
  5. Onko POST idempotentti?
  6. Ei, POST menetelmä ei ole idempotentti, mikä tarkoittaa, että useat identtiset POST-pyynnöt luovat useita resursseja.
  7. Onko PUT idempotentti?
  8. Kyllä PUT 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ää POST 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ää PUT 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ä PUT -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 POST 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, PUT menetelmä voi luoda uuden resurssin kyseiselle URI:lle.
  19. Mikä on onnistuneen POST-pyynnön vastauksen tilakoodi?
  20. Onnistunut POST 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 POST 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 PUT 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.

Viimeisiä ajatuksia POST- ja PUT-menetelmistä

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.