📘
Notes
Blog
DevOps
DevOps
  • Overview
  • DevOps
  • Social Coding
  • Agile Planning
  • RESTful APIs
  • Cloud Native and Microservices
  • Test Driven Development
  • Continuous Integration
  • Behavior Driven Development
  • Platform as a Service
  • Docker
  • Security
  • Swagger and OpenAPI
  • Kubernetes
  • Infrastructure as Code
Powered by GitBook
On this page
  • HyperText Transfer Protocol (HTTP)
  • What is an API?
  • What is REST?
  • REST Architecture
  • What Does It Mean to Be RESTful?
  • What is a Resource?
  • What Does Resource-Based Mean?
  • REST Provides a Uniform Interface
  • Stateless Applications
  • REST API Conventions

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.

PreviousAgile PlanningNextCloud Native and Microservices

Last updated 3 years ago