Dato un server HTTP (ad esempio Apache, IIS) e un'applicazione Web (codice utente in esecuzione nel server utilizzando PHP, ASP.NET e simili), quale di questi può decidere quale codice di stato HTTP restituire per qualsiasi richiesta?
O piuttosto, una "web application" deve essere interpretata come parte integrante di "server" come utilizzata negli RFC HTTP? Quest'ultimo (RFC 7230) è piuttosto corto su questo:
An HTTP "server" is a program that accepts connections in order to service HTTP requests by sending HTTP responses.
Poiché la risposta effettiva è generata da un'applicazione web (escluse le risorse statiche), direi che l'applicazione web è parte reale del server.
Tuttavia, a parte l'eterno "quale codice di stato HTTP da utilizzare nelle [situazioni arbitrarie]?" discussioni, c'è anche la discussione "Se le applicazioni web usano anche i codici di stato HTTP? ", a cui vorrei una risposta normativa.
Vedi ad esempio l' API REST di Google Maps . Restituiscono 200 per ogni risposta, che può essere interpretata come "La richiesta è terminata sul server HTTP, quindi quella parte è andata su OK (200)" . Qualsiasi errore applicazione che si verifica nel corpo del messaggio come stato JSON, fino al punto NOT_FOUND
.
È corretto? Non dovrebbe una richiesta di GET /Clients/123
restituire un 404
quando quel client non esiste? Allora che dire di GET /clients.php?id=123
, supponendo che esista clients.php
?
O 404
significa veramente "Non so cosa stai cercando di fare, ma non ti servirò una risorsa in quanto non ci sono risorse a (una parte di ) quell'URI "," risorsa "che significa" un file (o routing) ", che dovrebbe essere restituito dal server solo quando qualcuno ha dimenticato di implementare l'applicazione ClientService?
Il codice di stato funziona solo per la parte HTTP delle cose, o è una parte dell'applicazione Web del server, consentendo di utilizzare i codici di stato appropriati dove si adattano, utilizzando i codici di stato HTTP come codici di risposta API?