Learning Python Network Programming

(Sean Pound) #1
Chapter 2

HTTP methods


So far, we've been using requests for asking servers to send web resources to us, but
HTTP provides more actions that we can perform. The GET in our request lines is
an HTTP method, and there are several methods, such as HEAD, POST, OPTION, PUT,
DELETE, TRACE, CONNECT, and PATCH.


We'll be looking at several of these in some detail in the next chapter, but there are
two methods, we're going to take a quick look at now.


The HEAD method


The HEAD method is the same as the GET method. The only difference is that the
server will never include a body in the response, even if there is a valid resource at
the requested URL. The HEAD method is used for checking if a resource exists or if it
has changed. Note that some servers don't implement this method, but when they
do, it can prove to be a huge bandwidth saver.


We use alternative methods with urllib by supplying the method name to a
Request object when we create it:





req = Request('http://www.google.com', method='HEAD')








response = urlopen(req)








response.status





200





response.read()





b''


Here the server has returned a 200 OK response, yet the body is empty, as expected.


The POST method


The POST method is in some senses the opposite of the GET method. We use the POST
method for sending data to the server. However, in return the server can still send
us a full response. The POST method is used for submitting user input from HTML
forms and for uploading files to a server.


When using POST, the data that we wish to send will go in the body of the request.
We can put any bytes data in there and declare its type by adding a Content-Type
header to our request with an appropriate MIME type.

Free download pdf