4.59 sur 5
4.59

API REST avec Flask et Python

Créez des API REST professionnelles avec Python, Flask, Flask-RESTful et Flask-SQLAlchemy
Instructeur :
Mahefa Abel
English En savoir plus
Connecter des applications web ou mobiles aux bases de données et serveurs via des API REST
Créez des API REST sécurisées et fiables qui incluent l'authentification, la journalisation, la mise en cache, etc.
Comprendre les différentes couches d'un serveur Web et comment les applications Web interagissent les unes avec les autres
Gérer l'authentification utilisateur transparente avec des fonctionnalités avancées telles que l'actualisation des jetons
Gérez les déconnexions et évitez les abus dans vos API REST avec la liste noire JWT
Développer des API REST de qualité professionnelle avec des instructions d'experts

Vous en avez marre des tutoriels ennuyeux, obsolètes, incomplets ou incorrects ? Je ne dis plus au copier-coller de code que vous ne comprenez pas.

Bienvenue dans le cours REST API le plus vendu sur WeCours ! Je suis José. Je suis un ingénieur logiciel, là pour vous aider à vraiment comprendre et développer vos compétences en développement Web et REST API avec Python et Flask.

API REST prêts pour la production avec Flask

Ce cours vous guidera dans la création d’API REST simples, intermédiaires et avancées, y compris l’authentification, les déploiements, bases de données, et bien plus.

Nous commencerons par un rappel Python qui vous amènera des bases aux plus fonctionnalités avancées de Python — c’est tout le Python dont vous avez besoin pour terminer le cours.

En utilisant Flask et les extensions populaires Flask-RESTful, Flask -JWT, et Flask-SQLAlchemy, nous plongerons directement dans le développement d’API REST complètes, solides et prêtes pour la production.

Nous examinerons également les éléments essentiels technologies Git, Heroku et nginx .

Vous pourrez…

  • Créer un REST&nbsp prêt pour la production basé sur les ressources ; API utilisant Python, Flask et les extensions Flask populaires ;
  • Gérer l’enregistrement et l’authentification sécurisés des utilisateurs avec Flask.
  • Utiliser SQLAlchemy et Flask-SQLAlchemy pour stocker facilement et efficacement des ressources dans une base de données ; et
  • Comprendre les subtilités complexes des déploiements et les performances des API Flask REST.

 

Mais qu’est-ce qu’une API REST ?

Une API REST est une application qui accepte les données des clients et renvoie les données. Par exemple, une API REST peut accepter des données textuelles du client, telles qu’un nom d’utilisateur et un mot de passe, et indiquer s’il s’agit d’un utilisateur valide dans la base de données.

Lors du développement d’API REST, nos clients sont généralement des applications Web ou des applications mobiles. Cela contraste avec la création de sites Web, où les clients sont généralement les utilisateurs eux-mêmes.

Ensemble, nous allons développer une API REST qui permet non seulement aux clients de s’authentifier, mais également de stocker et de récupérer toutes les données que vous voulez à partir d’une base de données. Apprendre cela vous aidera à développer toute API REST dont vous avez besoin pour vos propres projets !

 

Je suis fier de fournir un excellent support et des commentaires à chaque élève. Je suis toujours disponible pour vous guider et répondre à vos questions.

Je vous verrai à l’intérieur. Faites votre premier pas vers la maîtrise REST API !

Welcome!

1
How to take this course

This course is structured in a specific way to make it as easy as possible for you to get exactly what you want out of it.

This lecture looks at maximising your time's value by making the course as efficient as possible for you.

2
Python on Windows

Installing Python is very simple! Follow these steps and you'll be up and running in no time.

3
Python on Mac

Installing Python is very simple! Follow these steps and you'll be up and running in no time.

A Full Python Refresher

1
Introduction to this section

This is a short introductory video to this section. I'm really excited to guide you through this Python refresher course!

2
Access the code for this section here

This lecture has a link to all the Python code we'll write in this section. Use it to check your code as you write it, or to refresh your memory!

3
Variables in Python

Let's look at variables in Python. Variables are just names for values, which we can reuse and reset.

Python is a dynamic typed language, which means variables don't need be constrained to a specific type.

4
The Coding Exercises for This Section

We've published all our coding exercises for this section in a new, easier to use platform, as well as on WeCours. That way you can write your code in whichever platform you find easier!

5
Variables
6
Solution to coding exercise: Variables

The solution to the "Variables" Python coding exercise.

7
String formatting in Python
8
Getting user input
9
Writing our first Python app
10
Lists, tuples, and sets

In this lecture we look at three essential data structures in Python: lists, tuples, and sets.

A list is an ordered collection of items.

A tuple is an immutable ordered collection of items.

A set is an unordered collection of unique items.

11
Advanced set operations

In this fascinating video, we look at advanced set operations: calculating items which are in two sets, or items which are in one set but not another.

12
Lists, tuples, and sets
13
Solution to coding exercise: Lists, tuples, sets

The solution to the "Lists, tuples, and sets" Python coding exercise.

14
Booleans in Python
15
If statements

This video explores how to create programs which can change depending on some input. For example, we might ask the user if they want to continue or not.

This makes use of boolean comparisons, such as:

  • 1 == 1 (which is True)
  • 5 > 5 (which is False)

The boolean comparisons we have available in Python are many:

  • ==
  • !=
  • >, <, <=, >=
  • is
  • is not
  • in
  • not in
16
The 'in' keyword in Python
17
If statements with the 'in' keyword
18
Loops in Python

Loops allow us to repeat things over and over. This video explores two different types of loop in Python: for loop and while loop.

19
Flow control—loops and ifs
20
Solution to coding exercise: Flow control

The solution to the "Flow control" Python coding exercise.

21
List comprehensions in Python

List comprehension is a relatively unique thing to Python.

It allows us to succinctly use a for loop inside a list to generate values. These values then end up in the list.

For example, [x for x in range(10)] generates a list [0, 1, 2, 3, 4, 5, 6, 7, 8, 9].

22
Dictionaries

Dictionaries are an extremely useful thing in Python.

They are akin to sets, but instead of being a set of unique values, they are a set of unique keys, and each has a value associated with it.

23
Destructuring variables
24
Functions in Python

In this video, let's look at methods in Python by creating some examples. Creating methods is simple, you just need the one keyword: def.

25
Function arguments and parameters
26
Default parameter values
27
Functions returning values
28
Functions
29
Solution to coding exercise: Functions

The solution to the "Method" Python coding exercise.

30
Lambda functions in Python
31
Dictionary comprehensions
32
Dictionaries and students
33
Solution to coding exercise: Dictionaries

The solution to the "Dictionaries and students" Python coding exercise.

34
Unpacking arguments

*args and **kwargs are truly fascinatingly confusing. For eons, they have annoyed Python learners.

To this I say no more!

They're just a way of passing arguments.

35
Unpacking keyword arguments
36
Object-Oriented Programming in Python

Objects are the natural progression from dictionaries. Instead of just holding data, objects hold another special type of data: methods.

A method is a function which operates on the object calling it. Thus, an object can use its own values to calculate outputs of methods. Very cool.

37
Magic methods: __str__ and __repr__
38
Classes and objects
39
Solution to coding exercise: Classes and objects

The solution to the "Classes and objects" Python coding exercise.

40
@classmethod and @staticmethod

In many instances, we don't want our methods to be solely referencing the object which calls them. Sometimes, we want to reference the class of the object. Other times, we don't need either the object or the class.

@classmethod and @staticmethod are two decorators (looking at that shortly!) which extend the capabilities of methods.

41
@classmethod and @staticmethod
42
Solution to coding exercise: @classmethod and @staticmethod

The solution to the "@classmethod and @staticmethod" Python coding exercise.

43
Class inheritance

Classes in Python can also inherit from one another. This essentially means that a class contains all of the properties and methods of the class it inherits from—but with the added bonus that it can have more.

44
Class composition
45
Type hinting in Python 3.5+
46
Imports in Python
47
Relative imports in Python
48
Errors in Python
49
Custom error classes
50
First-class functions

Not only we can pass values from one method to another, but we can also pass functions.

This is not used very often, but it can sometimes yield very powerful methods in very few lines of code.

51
Simple decorators in Python

One of the most confusing aspects of Python for learners is the concept of decorators.

These are things we can place on top of function definitions which allow us to extend the function by executing code before and after the function.

They are extremely powerful when used well!

52
The 'at' syntax for decorators
53
Decorating functions with parameters
54
Decorators with parameters

In this video we look at advanced decorators in Python, which is decorators that take arguments.

This amplifies the decorator's usefulness, although also makes them slightly more contrived.

55
Mutability in Python
56
Mutable default parameters (and why they're a bad idea)

Your first REST API

1
What is an API?

What is an API? How do you interact with them? What's the difference between a client and a provider?

Answers to all these questions are in this short lecture and the linked blog post!

2
Installing Flask

Installing Flask is a necessary first step. Fortunately, installing things in Python is really simple.

All we have to do is execute pip3.5 install Flask, and that will use the Python Package Index to download the package and install it for us.

3
Access the code for this section here

This lecture has a link to all the Python code we'll write in this section. Use it to check your code as you write it, or to refresh your memory!

4
Your first Flask application

Already we can create our first web server application! This is an application that returns some data when called using a GET request (such as through a web browser).

5
HTTP Verbs

In this lecture we look at how HTTP works and what the verbs mean. They're going to be extremely important when we come to think of REST APIs.

6
REST Principles

In this lecture we look at the principles behind REST.

REST APIs are only APIs that follow and comply with the REST principles.

Two of the main REST principles are:

  • That it is resource-based
  • That it is stateless
7
Creating our application endpoints

Now that we know about HTTP and REST, we can create our application endpoints (the routes), so we can return different data depending on which endpoint is called.

8
Returning a list of stores

In this video we extend the application by returning a list of stores.

9
Implementing other endpoints

In this video we implement the other missing endpoints in the application. We now have a complete web server application!

10
Calling the API from JavaScript

Although the focus of the course is not on creating applications to interact with our API, it's useful to know how the API will be called from within a web application.

Normally, APIs are called to retrieve data to create elements on a page, or to do things like authentication, saving to database, or delegate processing to the server.

11
Using Postman for API testing

Testing your API is essential. Without testing, you cannot be sure that your API works. Therefore, you cannot tell your users to use your API! What if it breaks?

In this video we look at Postman, a great tool to test APIs.

Flask-RESTful for more efficient development

1
Virtualenvs and setting up Flask-RESTful

A very nice piece of software that we can use with Python is the virtualenv.

This allows us to have a different Python installation for every project, which means no shared libraries and context.

This is nice because libraries evolve over time. Something that worked in Flask-RESTful a year ago may not work today, so it makes sense to keep each project separate.

Or else, if we created a project last year and today we update Flask-RESTful, things may not work as expected!

2
Access the code for this section here

This lecture has a link to all the Python code we'll write in this section. Use it to check your code as you write it, or to refresh your memory!

3
Your first Flask-RESTful app

In this video we create our first Flask-RESTful app, which includes our first Resource (remember REST APIs work with resources, instead of just data?).

4
Test-first API design—what is that?

In this video we explore the concept of test-first API design—akin to Test Driven Development.

It's important to first understand what we want our API to do, before we start writing any code. After all, it's easy to get bogged down on technical details and forget to actually write things that we want to use!

5
Creating our Item Resource

In this video we create our Item resource, which represents the actions we can perform on a store item.

6
The ItemList and creating Items

In this video we look at the ItemList, which represents the actions we can perform on a collection of items; and also at creating items and putting them in an in-memory database.

7
Improving code and error control

In this video we look at refactoring the code and making it better. This is extremely important in programming. Every now and then, stop and look at what you've written. Then, make it nicer without changing what it does.

This is a sure way of making sure your code is always readable and maintainable—which means you or other people will find it easy to work with and improve later on.

8
Authentication and logging in—part 1

Ah, a key focus of the course!

Authentication is something virtually every API needs in one way or another.

In this video we look at part 1 of authentication, which includes another Flask extension: Flask-JWT.

9
Authentication and logging in—part 2

Part 2 of the authentication videos. Here we complete the authentication process and test it with Postman.

10
DELETE to delete Items

In this video we implement the DELETE HTTP verb, which is very simple with Flask-RESTful.

Now we can delete items from our in-memory database.

11
PUT to create or update Items

In this video we implement the PUT HTTP verb. One of the key definitions of PUT is that it has to be idempotent.

To be idempotent means that if we call the same endpoint 5 times in a row, only the first call will exert a change in the server.

We can use it to create an item, or to update an item if it already exists.

12
Advanced request parsing with Flask-RESTful

Very often we want to limit the data we accept in our requests. Using reqparse it becomes very easy to do this, and it's built into Flask-RESTful!

13
Optimising our final code and request parsing

In this final video we look once again at our code, and making it nicer and more efficient.

Something that often works is to look at code duplication, and trying to remove duplication.

Storing resources in a SQL database

1
Setting up our project

In this short video we look at setting up our project for this section and installing the required libraries (which, to interact with a SQLite database, happens to be none!).

2
Access the code for this section here

This lecture has a link to all the Python code we'll write in this section. Use it to check your code as you write it, or to refresh your memory!

3
Running a SQLite database and interacting with it from Python

In this video we look at running a local SQLite database and interacting with it from our Python code.

4
Logging in and retrieving Users from a database

In this video we look at logging our users in by using sample data stored in our database.

This entails retrieving our user's data using SQL, which we can do by using a SELECT statement.

5
Signing up and writing Users to a database

In this video we look at signing our users up to our app by writing their details to a database. This includes creating a /register endpoint to handle the incoming data.

6
Preventing duplicate usernames when signing users up

In this video we take a quick look at preventing duplicate usernames—a good example of things you have to think about when doing API design.

7
Retrieving our Item resources from a database

In this video we look at retrieving items from a database. Similar to getting our users to log in, but this time accessing our items table.

8
Writing our Item resources to a database

Naturally, retrieving items only is not enough!

In this video we look at creating items and writing them to the database, which means that our API is now usable by other applications if they want to store and retrieve data from our database.

9
Deleting our Item resources from the database

In this video we look at implementing item deletion, which involves deleting the appropriate row from the table.

Warning: it's easy to delete all data from the table, so be careful!

10
Refactoring insertion of items

In this video we look at refactoring (improving) the code so that the insertion of items is not coupled to the endpoint responsible for inserting.

This will be essential for when the PUT method is implemented.

11
The PUT method with database interaction

In this video we look at implementing the PUT HTTP verb, and this entails either creating or updating an existing item.

12
Retrieving many items from the database

In this video, we retrieve a list of items from the database and also perform final Postman testing.

Everything works!

13
Advanced Flask-JWT Configuration

A great little PDF on advanced configuration, including modifying the authentication URL, key, and various handlers.

Simplifying storage with Flask-SQLAlchemy

1
Access the code for this section here

This lecture has a link to all the Python code we'll write in this section. Use it to check your code as you write it, or to refresh your memory!

2
Setting up this section's project

In this lecture we look at installing all the requirements and getting set up.

3
Improving the project structure and maintainability

In this lecture we start discussing Python packages, and how we can create them. We then move some files around to make the project more maintainable by logically grouping our files and classes.

4
Creating User and Item models

In this video we create User and Item models. We discuss the difference between a model and a resource, as this is essential in order to design our programs well.

5
Verifying the app works after our changes

In this video we quickly test using Postman that our refactoring has not broken the API! This is extremely important, as it is easy to forget to test and then end up with a bunch of untested changes.

If something breaks, you won't know where to start fixing it!

6
Advanced Postman: environments and tests

In this video we look at advanced Postman usage: tests and environments.

This is extremely useful as it quickly lets us re-use existing text with environment variables.

Tests allow us to quick gauge whether an endpoint call has been successful or not. For example, if it took too long, returned an incorrect error code, didn't return the appropriate values, etc...

7
Errata: small mistake in code in the next video
8
Telling SQLAlchemy about our tables and columns

In this video we tell SQLAlchemy about our tables and columns, which includes defining the data types and primary key.

9
Implementing the ItemModel using SQLAlchemy

In this video we greatly simplify the ItemModel by using methods that SQLAlchemy gives us. We also look into the query builder, which is a key part of SQLAlchemy, and that allows us to easily build SQL queries just by using Python code.

10
Implementing the UserModel using SQLAlchemy

In this video we implement the UserModel, which also simplifies it greatly.

11
Easily displaying the ItemList resource with SQLAlchemy

In this video we massively simplify the ItemList resource by virtue of using SQLAlchemy.

Instead of a massive code spew, we can reduce our ItemList to a single line of concise and readable code.

12
No more creating tables manually—telling SQLAlchemy to create tables

In this video we look at the before_first_request decorator, which Flask has.

It allows us to run a method before the first request to the API is processed.

In this video, we create the tables before the first request so that we no longer need to create them manually.

13
Creating a new model: StoreModel

In this video we demonstrate how quick and easy it can be to create new models for our API to use. Here we create a StoreModel, which also includes a relationship to the ItemModel.

Modelling relationships with SQLAlchemy is also surprisingly concise.

14
Creating the Store Resource

In this video we create the Store and StoreList resources, which is quick since they are similar to the Item and ItemList resources.

15
Final testing of this section's API

In this video we finalise testing our API using Postman, to make sure that all changes work appropriately.

I encourage you to test your API continuously, so you never write code that you don't know if it works or not.

Git—version control

1
Installing Git on Mac and Windows

In this video we look at installing Git.

2
What is a Git repository?

In this illuminating video, we look at what a Git repository really is (hint: a few hidden files and folders).

3
The Git workflow—part 1

In this part 1, we look at how the first few interactions with our local Git repository might go. It includes initialising the repository and adding files to the staging area.

4
The Git workflow—part 2, including GitHub

In this second part of the Git workflow, we look at committing our code and pushing it to a remote repository, hosted on GitHub.

5
Using SSH keys for security

In this video we look at using SSH keys for security, and how we can set up GitHub with our SSH key.

6
The README file

In this video we look at what a README file is, and why you want one in your repository. It is particularly important for others wanting to use or contribute to your project.

Deploying Flask apps to Heroku

1
Access the code for this section here

This lecture contains a link to the Python code we'll write and use in this section. Use it to check for mistakes as you write your code, or to refresh your memory!

2
What is Heroku?
3
Getting our code into GitHub
4
Setting up Heroku for Flask
5
Adding the required files to the project
6
Logs in Heroku and troubleshooting errors
7
Testing the deployed API with Postman
8
A small change needed in the next lecture
9
Adding PostgreSQL to our Heroku app
10
Working with Git and automatic deploys

Deploying Flask apps to our own server

1
Setting up a DigitalOcean server

In this lecture we look into setting up the DigitalOcean account and server. As per the video, to receive your two free months of a DigitalOcean server, you can use this link: https://m.do.co/c/d54c088544ed

2
Want to deploy to AWS?
3
Installing PostgreSQL in Ubuntu 16.04

In this lecture we look at installing PostgreSQL in Ubuntu 16.04.

Installing PostgreSQL is not difficult due to Ubuntu's package manager: apt.

Using apt-get, we can easily install PostgreSQL and have it running immediately!

4
Creating a UNIX user in Ubuntu 16.04

In this lecture we create a new UNIX user in our Ubuntu server, and give it a password.

5
Setting up our new user with PostgreSQL permissions

In this lecture we set up our new user with a PostgreSQL database, and give it appropriate permissions (including permissions to use a password with the md5 format).

6
Setting up nginx and our REST API

In this lecture we install nginx and set up the connection from nginx to the uWSGI process.

7
Setting up uWSGI to run our REST API

In this lecture we install uWSGI and set it up to run our REST API. This is the last step in the deployment!

8
Testing our API to make sure everything works

In this lecture we verify our API works with the new deployment, and talk about next steps—such as using Varnish to improve performance.

Security in your REST APIs

1
Welcome to this section

This lecture quickly introduces security in REST APIs and what we'll be looking at in this section.

2
Security in REST APIs e-book

This lecture contains an e-book, which you can access to learn about enabling SSL (HTTPS) in REST APIs.

3
Getting our domain name

This lecture covers finding and purchasing our domain name.

4
Setting up Cloudflare

This lecture covers setting up Cloudflare and its various options.

5
What is DNS?

This lecture is all about understanding what the Domain Name System is and how it works. Interesting stuff!

6
Setting our DNS records

In this lecture we set our DNS records so that our server is accessible through our domain name. We also look into a few different types of DNS records.

7
Verifying everything works—this is important!

Before continuing with SSL, make sure your domain name is working and you can connect to the API!

8
Creating our SSL certificate in Cloudflare

In this lecture we create the SSL certificate. Cloudflare can provide us with a valid certificate, which is very handy.

9
Configuring nginx for SSL

In this lecture we configure our nginx installation to use the SSL certificate. It's just a matter of copying over the certificate and key, and changing some nginx config!

10
Security in REST APIs

Verify your knowledge of domains and security in this quiz.

11
Extra technical SSL resources
12
Conclusion of this section

In this section we have looked at security in REST APIs in the form of SSL encryption of traffic between our clients and servers.

This means it's nearly impossible to snoop on the traffic and extract things like emails and passwords that are being sent via HTTPS requests.

Token refreshing and Flask-JWT-Extended

1
Welcome to this section
2
Recent changes to Flask-JWT-Extended
3
A recap of the code + a few changes!
4
Creating a User Resource for testing
5
Testing our new Resource with Postman
6
Logging in with Flask-JWT-Extended
7
Testing the login with Postman
8
Adding JWT Claims
9
Getting the JWT identity in and endpoint and @jwt_optional
10
What is a fresh token?
11
Performing token refresh in our REST API
12
Requiring a fresh token in an endpoint
13
Customizing Flask-JWT-Extended callbacks and responses
14
Blacklisting with Flask-JWT-Extended
15
Logging users out in our REST API
16
E-book: complete review of the API so far
17
Flask-JWT-Extended further reading

Bonus Section

1
Bonus lecture: other courses and next steps

A unique offer for those who finish the course, including where to go next with your learning of Python and REST API development.

Vous pouvez afficher et revoir les supports de cours indu00e9finiment, comme une chau00eene u00e0 la demande.
Absolumentu00a0! Si vous disposez d'une connexion Internet, les cours sur WeCours sont disponibles u00e0 tout moment sur n'importe quel appareil. Si vous n'avez pas de connexion Internet, certains instructeurs permettent u00e9galement u00e0 leurs u00e9tudiants de tu00e9lu00e9charger les cours. instructeur cependant, alors assurez-vous d'u00eatre de leur bon cu00f4tu00e9u00a0!
4.6
4.6 sur 5
Notes13979

Détails des Notes

Étoiles 5
7659
Étoiles 4
4273
Étoiles 3
849
Étoiles 2
121
Étoiles 1
92
Suivre un cours
Garantie de remboursement de 30 jours

Inclut

17 heures de vidéo à la demande
Accès complet à vie
Accès sur le mobile et la télévision
Certificat d'achèvement

Archive

Working hours

Monday 9:30 am - 6.00 pm
Tuesday 9:30 am - 6.00 pm
Wednesday 9:30 am - 6.00 pm
Thursday 9:30 am - 6.00 pm
Friday 9:30 am - 5.00 pm
Saturday Closed
Sunday Closed