The HTTP request-response model
The essential HTTP protocol is, ideally, stateless. A user agent or client can take a functional view of the protocol. We can build a client using the http.client
or urllib
library. An HTTP user agent essentially executes something similar to the following:
import urllib.request with urllib.request.urlopen(""http://slott-softwarearchitect.blogspot.com"") as response: print(response.read())
A program like wget or curl does this at the command line; the URL is taken from the arguments. A browser does this in response to the user pointing and clicking; the URL is taken from the user's actions, in particular, the action of clicking on linked text or images.
The practical considerations of the internetworking protocols, however, lead to some implementation details which are stateful. Some of the HTTP status codes indicate that an additional action on the part of the user agent is required.
Many status codes in the 3xx range indicate...