HTTP

HTTP, Hypertext Transfer Protocol, er en applikationsprotokol til request/response-kommunikation. En klient sender en forespørgsel til en server, og serveren sender et svar tilbage.

HTTP kræver et netværk nedenunder. IP sørger for adressering, og transportlaget leverer forbindelsen mellem programmerne. Den underliggende lokale netværksteknologi kan være WiFi eller en anden teknologi; her fokuserer vi på HTTP selv.

Byte-rate: HTTP har ikke sin egen faste bytehastighed. Den afhænger af den underliggende Wi-Fi-/netværksforbindelse, transporten og størrelsen på HTTP-headers og payload.

HTTP-klient sender request til HTTP-server, som svarer med status, headers og payload
HTTP som applikationsprotokol: request fra klient til server og response tilbage.

En HTTP-request

Et HTTP-response

Payload-formater

HTML og JSON er ikke HTTP-protokoller. De er formater, som HTTP kan transportere i payloaden.

Det hører derfor først hjemme på HTTP-siden som payload og content negotiation. Senere kan HTML og JSON få selvstændige teorisider under dataformater, hvis de skal forklares i dybden.

HTTP-pakkeformat: HTML eller JSON?

Klienten angiver ønsket format med Accept. Serveren angiver det format, den faktisk sender, med Content-Type. Det er altså ikke URL’en alene, der bestemmer, om svaret er HTML eller JSON.

Klient beder om HTML

GET /status HTTP/1.1
  Host: example.org
  Accept: text/html
  Connection: close

  HTTP/1.1 200 OK
  Content-Type: text/html; charset=utf-8
  Content-Length: 82

  <h1>Temperatur</h1>
  <p>21,5 °C</p>

Klient beder om JSON

GET /api/status HTTP/1.1
  Host: example.org
  Accept: application/json
  Connection: close

  HTTP/1.1 200 OK
  Content-Type: application/json

  {"temperature":21.5,"unit":"C"}

HTTP i IoT

En sensor kan sende målinger med POST, og en controller kan hente konfiguration med GET. HTTP er let at integrere med webservere, men protokollen har mere overhead end specialiserede IoT-protokoller.