Ce înseamnă http request body? (Programare, Html, Http, Xmlhttprequest, Httprequest)

Vignesh Gopalakrishnan a intrebat.

La citirea lucrurilor despre metodele POST și get, aici există o afirmație de genul ” atunci când se folosește metoda post, se folosește HTTP request Body . Ce înseamnă ” HTTP request body”?

3 răspunsuri
Mazzu

Datele corpului HTTP sunt octeții de date transmise într-un mesaj de tranzacție HTTP imediat după antetele, dacă există (în cazul HTTP/0.9 nu se transmit antetele).

Majoritatea cererilor HTTP sunt cereri GET fără corp. Cu toate acestea, simularea cererilor cu corpuri este importantă pentru a solicita în mod corespunzător codul proxy și pentru a testa diverse cârlige care lucrează cu astfel de cereri. Majoritatea cererilor HTTP cu corpuri utilizează metoda de solicitare POST sau PUT.

Corpul mesajului

Partea „message body” este opțională pentru un mesaj HTTP, dar, dacă este disponibilă, este utilizată pentru a conține corpul entității asociat cu cererea sau răspunsul. În cazul în care este asociat un corp de entitate, atunci, de obicei, liniile de antet Content-Type și Content-Length specifică natura corpului asociat.

Corpul mesajului este cel care transportă datele efective ale cererii HTTP (inclusiv datele de formular și datele încărcate etc.) și datele de răspuns HTTP de la server ( inclusiv fișiere, imagini etc.). În continuare este prezentat un conținut simplu al corpului unui mesaj:

<html>
<body>
<h1>Hello, World!</h1>
</body>
</html>

Pentru mai multe detalii despre mesajele și corpurile HTTP, consultați linkul w3org

Comentarii

  • Mazzu, specificația actuală este greenbytes.de/tech/webdav/… –  > Por Julian Reschke.
  • Mulțumesc, Julian, o voi parcurge. 🙂 –  > Por Mazzu.
  • Deci, corpul mesajului este egal cu sarcina utilă a corpului atunci când aveți de-a face cu ajax și/sau webservices prin PUT POST? –  > Por yardpenalty.com.
August Jelemson

Următorul html <form>:

<form action="http://localhost:8000/" method="post" enctype="multipart/form-data">
  <label>Name: <input name="myTextField" value="Test"></label>
  <label><input type="checkbox" name="myCheckBox"> Check</label>
  <label>Upload file: <input type="file" name="myFile" value="test.txt"></label>
  <button>Send the file</button>
</form>

va trimite acest cerere HTTP (care este un tip de mesaj HTTP):

POST / HTTP/1.1
Host: localhost:8000
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Upgrade-Insecure-Requests: 1
Content-Type: multipart/form-data; boundary=---------------------------8721656041911415653955004498
Content-Length: 465

-----------------------------8721656041911415653955004498
Content-Disposition: form-data; name="myTextField"

Test
-----------------------------8721656041911415653955004498
Content-Disposition: form-data; name="myCheckBox"

on
-----------------------------8721656041911415653955004498
Content-Disposition: form-data; name="myFile"; filename="test.txt"
Content-Type: text/plain

Simple file.
-----------------------------8721656041911415653955004498--

Linii POST / HTTP/1.1 la Content-Length: 465 sunt mesajele HTTP , , în timp ce restul – după linia goală – corespunde cu antetul HTTP corpului mesajului (cunoscut și sub numele de conținut).

Deci, cum puteți accesa aceste date în back-end/server?
Diferite limbaje de server (de exemplu, Go-lang, Node.js și PHP… etc.) au moduri diferite de a analiza <em>http body</em> dintr-un fișier <em>http post request</em>. În Node.js este obișnuit să se utilizeze body-parser care este o funcție middleware de parsare (a se vedea exemplul de mai jos).

// Node.js
// OBSERVE THAT YOU NEED THE BODY-PARSER MIDDLEWARE IN ORDER TO DO THIS!
⋮
var data1 = req.body.myTextField;
var data2 = req.body.myCheckBox;
var data3 = req.body.myFile;
⋮

Mai multe informații despre corpuri:

Corpurile pot fi împărțite, în linii mari, în două categorii:

  1. Single-resource bodies, care constau dintr-un singur fișier, definit de cele două anteturi: Content-Type și Content-Length.
  2. Corpuri cu resurse multiple, , constând dintr-un corp format din mai multe părți, fiecare dintre acestea conținând un bit diferit de informații. Acesta este asociat în mod obișnuit cu formulare HTML.

Surse:

mikebrooks

Un caz comun de utilizare este un API care așteaptă date în format JSON. Mai jos este un exemplu de fragment de cod preluat din Postman, în care API este o funcție Azure Function, iar corpul cererii este JSON:

POST /api/ValidateTwitterFollowerCount HTTP/1.1
Host: myazurefunction.azurewebsites.net
Content-Type: application/json
cache-control: no-cache
Postman-Token: XXXXXXX-XXXXX-XXXXXX

{
    "followersCount" : 220,
    "tweettext":"#Stack Overflow rocks",
    "Name": "John Doe"
}