REST APIs are a specific type of APIs. They use HTTP as the protocol to communicate with them, so you can imagine that they will be the most used ones by web applications. In fact, they are not very different from the websites that you've already built, since the client sends an HTTP request, and the server replies with an HTTP response. The difference here is that REST APIs make heavy use of HTTP status codes to understand what the response is, and instead of returning HTML resources with CSS and JS, the response uses JSON, XML, or any other document format with just information, and not a graphic user interface.
Let's take an example. The Twitter API, once
authenticated, allows developers to get the tweets of a given user
by sending an HTTP GET request to https://api.twitter.com/1.1/statuses/user_timeline.json
.
The response to this request is an HTTP message with a JSON map of
tweets as the body and the status code 200. We've already mentioned
status code in Chapter
2, Web Applications
with PHP, but we will review them shortly.
The REST API also allows developers to post
tweets on behalf of the user. If you were already authenticated, as
in the previous example, you just need to send a POST request to
https://api.twitter.com/1.1/statuses/update.json
with the appropriate POST parameters in the body, like the text
that you want to tweet. Even though this request is not a GET, and
thus, you are not requesting data but rather sending it, the
response of this request is quite important too. The server will
use the status codes of the response to let the requester know if
the tweet was posted successfully, or if they could not understand
the request, there was an internal server error, the authentication
was not valid, and so on. Each of these scenarios has a different
status code, which is the same across all applications. This makes
it very easy to communicate with different APIs, since you will not
need to learn a new list of status code each time. The server can
also add some extra information to the body in order to throw some
light on why the error happened, but that will depend on the
application.
You can imagine that these REST APIs are provided to developers so they can integrate them with their applications. They are not user-friendly, but HTTP-friendly.