RESTful APIs
Building RESTful Services with Python and Flask
HyperText Transfer Protocol (HTTP)
The HyperText Transport Protocol (HTTP) is how web browsers talk to servers.
An HTTP request consists of:
URL
Header
Body
What is an API?
Application Programming Interface
A documented way to interact with a program or service
Defines the requests that you can make of the service
Defines the data that you can interchange with the service
Defines the results that will be returned by the service
What is REST?
REpresentational State Transfer
A REST API describes a set of resources
A simple way to transfer and manipulate the state of a resource
A service based on REST is called a RESTful service
A RESTful service is exposed through a Uniform Resource Locator (URL)
A client would issue a Hypertext Transfer Protocol (HTTP) request to manipulate it
REST is not a Remote Procedure Call (RPC) or just a bunch of verbs as URI's.
REST Architecture
REST is a client-server architecture: The client and the server provide a separation of concerns which allows both the client and the server to evolve independently as it only requires that the interface stays the same
REST is stateless: The communication between the client and the server always contains all the information needed to perform the request. There is no session state in the server.
REST is cacheable: The client, the server can cache resources in order to improve performance
REST provides a uniform interface between components: All components follow the same rules to speak to one another
REST is a layered system: Individual components cannot see beyond the immediate layer with which they are interacting
What Does It Mean to Be RESTful?
Everything is represented as a Resource
Resource identification through URI (Uniform Resource Identifier), e.g., GET http://myservice.com/users/123
Uniform interface (I should be able to guess the interface given a resource name)
Self-descriptive messages are used to represent Resources (usually XML or JSON)
Stateful interactions through hyperlinks
A service based on REST is called a RESTful service
What is a Resource?
The fundamental concept in any RESTful API is the resource
A resource is an object with a type, associated data, relationships to other resources, and a set of methods that operate on it
Only a few standard methods are defined for the resource corresponding to the standard HTTP GET, POST, PUT and DELETE methods
What Does Resource-Based Mean?
Things vs Actions
Nouns vs Verbs
Not a Remote Procedure Call mechanism
Everything is Identified by URI’s: Multiple URI’s can manipulate the same Resource using different HTTP Verbs
REST Provides a Uniform Interface
Simplifies and decouples the architecture
Fundamental to RESTful design is an interface that almost be guessed: Perform CRUD on Resources
Uses HTTP verbs (POST, GET, PUT, DELETE)
Uses URL’s to address resources
Uses HTTP Response (status, body)
Stateless Applications
Server maintains no client state
Each request contains enough context to process the message
Any application state must be held on the client side
Allows easy horizontal scaling of application services
REST API Conventions
Use REST API conventions to provide a consistent and easy to use interface for
REST API conventions define specific behavior for each type of HTTP method. Use the following guidelines as a starting point for designing your API.
GET (read) operations only query data. A GET request should never modify data.
POST (create) operations create new resource but do not modify existing resources.
PUT and PATCH (update) operations modify existing resources. (PUT is more common)
DELETE (delete) operations destroy resources
PUT and DELETE operations are idempotent, which means they have no further effect when performed multiple times after the first time.
Last updated