Book Image

Python API Development Fundamentals

By : Jack Chan, Ray Chung, Jack Huang
Book Image

Python API Development Fundamentals

By: Jack Chan, Ray Chung, Jack Huang

Overview of this book

Python is a flexible language that can be used for much more than just script development. By knowing the Python RESTful APIs work, you can build a powerful backend for web applications and mobile applications using Python. You'll take your first steps by building a simple API and learning how the frontend web interface can communicate with the backend. You'll also learn how to serialize and deserialize objects using the marshmallow library. Then, you'll learn how to authenticate and authorize users using Flask-JWT. You'll also learn how to enhance your APIs by adding useful features, such as email, image upload, searching, and pagination. You'll wrap up the whole book by deploying your APIs to the cloud. By the end of this book, you'll have the confidence and skill to leverage the power of RESTful APIs and Python to build efficient web applications.
Table of Contents (12 chapters)


Flask-Caching is a Flask extension package that allows us easily implement caching functionality. You can imagine a cache as a dictionary object that contains key-value pairs. The key here is used to specify the resource to cache, whereas the value is used to store the actual data to be cached. Take the resource for retrieving all the recipes as an example. The flow contains the following stages:

  1. Request the get /recipes resource.
  2. Use the key to search for the existing cache (Flask-Caching will be using request.path and hashed_args to be the key value, for example, recipesbcd8b0c2eb1fce714eab6cef0d771acc).
  3. If the recipes were previously cached, return the cached data.
  4. If no cache for these recipes exists, follow the standard flow to get the recipes from the database.
  5. Save the result (the recipe data) in the cache.
  6. Return the recipe data.

The process is better illustrated through the following figure:

Figure 9.1...