-
Notifications
You must be signed in to change notification settings - Fork 4
REST API
REST API (Representational State Transfer Application Programming Interface) is a type of web service that uses HTTP requests to perform various operations on data. REST APIs are used to build web and mobile applications that communicate with a server-side database.
REST APIs are commonly used for the following purposes:
-
Building Web Applications: REST APIs allow web applications to interact with server-side databases by performing CRUD (Create, Read, Update, Delete) operations. This enables web applications to store and retrieve data from databases, and perform various other operations on the data.
-
Building Mobile Applications: REST APIs are used to build mobile applications that communicate with server-side databases. Mobile applications can use REST APIs to perform CRUD operations, authenticate users, and perform various other operations.
-
Integrating Systems: REST APIs can be used to integrate different systems by allowing them to communicate with each other. For example, a payment gateway can use a REST API to communicate with an e-commerce website to process payments.
-
Building Microservices: REST APIs are commonly used to build microservices that perform specific tasks. Each microservice can have its own REST API that can be accessed by other services or applications.
-
Building IoT Applications: REST APIs are used to build IoT (Internet of Things) applications that allow devices to communicate with each other. Devices can use REST APIs to exchange data and perform various operations.
REST API stands for Representational State Transfer Application Programming Interface. It is an architectural style for designing web services that are lightweight, scalable, and maintainable. RESTful web services use HTTP protocol to communicate between client and server and operate on resources using standard HTTP methods such as GET, POST, PUT, DELETE, etc.
In a REST API, each resource is identified by a unique URI (Uniform Resource Identifier) and clients can interact with these resources using the defined HTTP methods. For example, a GET request to the URI of a resource returns its current state, while a POST request creates a new resource and a PUT request updates an existing resource.
RESTful APIs use JSON or XML format for data representation, and they are stateless, meaning that no client context is stored on the server between requests. This allows for better scalability and reliability of the service.
Overall, REST API is a popular way to build web services because it is simple, flexible, and can be used by any client that can make HTTP requests.
The key principles of REST (Representational State Transfer) include:
-
Client-server architecture: The client and server are independent and can evolve separately, allowing for scalability and flexibility.
-
Statelessness: Each request from the client to the server must contain all the information necessary to understand the request, and the server cannot store any client context between requests.
-
Cacheability: Responses must be explicitly or implicitly labeled as cacheable or non-cacheable, which helps reduce network traffic and improves performance.
-
Layered system: A client may not be able to tell whether it is communicating directly with a server or an intermediary, such as a load balancer, cache, or proxy.
-
Uniform interface: The interface between the client and server must be consistent, with a standard set of HTTP methods (GET, POST, PUT, DELETE, etc.), resource representations (such as JSON or XML), and resource identifiers (URIs).
-
Code on demand (optional): Servers can optionally provide executable code in response to a request, such as JavaScript, which can be used to enhance the functionality of a client. This principle is not widely used in practice.
By following these principles, RESTful APIs provide a simple and consistent way for clients to interact with a server, allowing for easy integration with a wide range of platforms and programming languages.
There are several HTTP methods that are commonly used in RESTful web services. The most common ones are:
- GET - retrieves a resource or a collection of resources
- POST - creates a new resource or adds a new member to a collection
- PUT - updates an existing resource or replaces it with a new one
- PATCH - updates a resource partially
- DELETE - deletes a resource
These HTTP methods correspond to the CRUD (Create, Read, Update, Delete) operations that can be performed on resources in a RESTful web service.
In RESTful API, both PUT and POST methods are used to submit data to a server, but they have different purposes and use cases.
The PUT method is used to update an existing resource on the server. When a client sends a PUT request, it specifies the URI of the resource to be updated and the new representation of the resource in the request body. The server then updates the resource with the new representation.
On the other hand, the POST method is used to create a new resource on the server. When a client sends a POST request, it sends data in the request body, which the server uses to create a new resource. The server generates a new URI for the resource and includes it in the response to the client.
In summary, PUT is used to update an existing resource, while POST is used to create a new resource on the server.
HTTP (Hypertext Transfer Protocol) and HTTPS (Hypertext Transfer Protocol Secure) are both communication protocols used to transmit data between a client (such as a web browser) and a server (such as a web server). However, HTTPS is a more secure version of HTTP that uses SSL/TLS encryption to protect data in transit.
Here are the main differences between HTTP and HTTPS:
-
Security: HTTP is not secure and does not encrypt data in transit, while HTTPS is secure and encrypts all data exchanged between the client and server.
-
Port number: HTTP uses port 80 by default, while HTTPS uses port 443 by default.
-
Certificate: HTTPS requires the use of an SSL/TLS certificate to establish a secure connection, while HTTP does not.
-
Speed: HTTPS can be slower than HTTP due to the overhead of encryption and decryption.
Overall, HTTPS is recommended for any website or web application that requires the transmission of sensitive data, such as login credentials, financial information, or personal data.
In RESTful web services, error handling is an important aspect of the design. Here are some ways to handle errors in RESTful web services:
-
Use HTTP status codes: HTTP status codes are the standard way of communicating the result of a web request. Use status codes such as 200 OK for successful requests, 400 Bad Request for client errors, 401 Unauthorized for authentication errors, 404 Not Found for resource not found errors, and 500 Internal Server Error for server errors.
-
Return informative error messages: In addition to HTTP status codes, it is also important to return informative error messages to the client. The message should provide enough information to the client to understand the nature of the error and how to fix it. However, avoid returning sensitive information in error messages.
-
Use error objects: Instead of returning plain text error messages, use error objects that contain structured data. This allows for better parsing and processing of errors by clients.
-
Use error handlers: Use error handlers to catch and handle exceptions that may occur during the processing of requests. This can help prevent unhandled exceptions from causing crashes or security vulnerabilities in the application.
-
Document error handling: It is important to document the error handling mechanisms used in the API so that developers using the API are aware of how to handle errors that may occur.
HTTP status codes are used in RESTful web services to indicate the outcome of a request made by a client to a server. They are three-digit numbers that are sent by the server to the client as part of the response.
The purpose of HTTP status codes is to provide information about the status of the requested resource, the success or failure of the request, and any other information that the client may need to process the response correctly.
There are several categories of HTTP status codes, including:
- Informational (1xx): These status codes indicate that the server has received the request and is processing it.
- Success (2xx): These status codes indicate that the server has successfully processed the request and is returning the requested information to the client.
- Redirection (3xx): These status codes indicate that the client needs to take additional action to complete the request, such as following a redirect.
- Client error (4xx): These status codes indicate that the client has made an error in its request, such as requesting a resource that does not exist.
- Server error (5xx): These status codes indicate that the server has encountered an error while processing the request.
Some common HTTP status codes used in RESTful web services include:
- 200 OK: Indicates that the request was successful and the server is returning the requested information.
- 201 Created: Indicates that a new resource has been successfully created on the server.
- 400 Bad Request: Indicates that the client has made a malformed or invalid request.
- 401 Unauthorized: Indicates that the client needs to provide authentication credentials to access the requested resource.
- 404 Not Found: Indicates that the requested resource does not exist on the server.
- 500 Internal Server Error: Indicates that the server encountered an error while processing the request.
Content negotiation is a mechanism used in RESTful web services to enable the client and server to agree on the representation of a resource to be exchanged. It allows the client to request a specific format or representation of a resource and the server to respond with that format or representation if it is available.
In content negotiation, the client sends an HTTP request with an "Accept" header that specifies the desired media type of the response. The server then examines the request header and determines the most appropriate representation of the requested resource, based on the available representations and the client's preferences.
Content negotiation can occur at different levels, such as at the level of the entire resource or at the level of individual elements within the resource. It allows for greater flexibility and extensibility in the representation of resources, and enables the server to provide different representations of the same resource based on the client's needs and preferences.
HATEOAS stands for "Hypermedia as the Engine of Application State". It is a constraint of the REST architectural style, which means that if a web API is considered truly RESTful, it should implement HATEOAS.
HATEOAS refers to the inclusion of hypermedia links in responses from the API, which allows clients to dynamically navigate the API and discover available actions. In other words, the API provides links to related resources along with the response data, enabling the client to move between resources by following those links. This approach allows for a more flexible and decoupled architecture, where the client and server can evolve independently.
For example, a response from a HATEOAS-compliant API might include a link to retrieve related resources, a link to update the current resource, or a link to delete the current resource. The client can then follow those links to perform the desired action, without needing to know the exact URLs or details of those actions ahead of time.
In summary, HATEOAS is an important concept in RESTful web services because it allows clients to discover and interact with resources dynamically, rather than being tightly coupled to specific URLs or endpoints.
There are several authentication and authorization methods used in RESTful web services. Here are some of the most common ones:
-
HTTP Basic Authentication: This is a simple authentication method in which the client sends the username and password in the HTTP header of each request. It is easy to implement but not very secure.
-
OAuth 2.0: This is an industry-standard protocol for authorization. It allows users to grant access to their data on one website to another website without giving their password.
-
JSON Web Tokens (JWT): This is a token-based authentication method that is widely used in RESTful web services. It is a compact, URL-safe means of representing claims to be transferred between two parties.
-
Token-Based Authentication: In this method, the client sends a token along with each request to the server. The server verifies the token to determine if the request is authorized.
-
API Keys: This is a simple method of authentication in which the client sends a unique key with each request to the server. The server verifies the key to determine if the request is authorized.
It is important to choose the authentication and authorization method that best suits the needs of your application, based on factors such as security requirements, ease of implementation, and user experience.
Versioning in RESTful web services refers to the practice of managing changes to the API over time, while maintaining backward compatibility for existing clients. There are several ways to handle versioning in RESTful web services, including:
-
URI Versioning: In URI versioning, the version number is included as part of the URL. For example,
http://example.com/api/v1/resource
. -
Query Parameter Versioning: In Query Parameter Versioning, the version number is included as a query parameter. For example,
http://example.com/api/resource?version=1
. -
Header Versioning: In Header Versioning, the version number is included as a custom header. For example,
X-API-Version: 1
. -
Content Negotiation: In Content Negotiation, the version is negotiated between the client and server based on the content type of the request and response. For example, the Accept header could be used to specify the version.
When choosing a versioning strategy, it is important to consider factors such as ease of implementation, backwards compatibility, and impact on caching. It is also important to document the versioning strategy and communicate it clearly to API clients.
SOAP (Simple Object Access Protocol) and REST (Representational State Transfer) are two different approaches to building web services. Here are some of the key differences between them:
-
Architecture: SOAP is a protocol and uses XML as a messaging format, whereas REST is an architectural style and uses HTTP as its messaging format.
-
Protocol support: SOAP can be used with a variety of protocols including HTTP, SMTP, TCP, and others, whereas REST is limited to HTTP and HTTPS.
-
Messaging style: SOAP uses a message-oriented style of communication, while REST uses a resource-oriented style.
-
Message format: SOAP messages have a well-defined structure, while REST messages do not have a standard format.
-
Flexibility: REST is more flexible than SOAP because it doesn't require XML or SOAP headers, which can make it easier to implement and use.
-
Performance: REST is generally considered to be faster and more scalable than SOAP, primarily because it uses a simpler message format and relies on the caching capabilities of HTTP.
-
Security: Both SOAP and REST can be secured using a variety of methods, but SOAP has built-in support for more security standards, such as WS-Security, whereas REST relies on HTTP authentication mechanisms.
In summary, SOAP and REST are two different approaches to building web services, with SOAP being a protocol that uses XML as its messaging format and REST being an architectural style that uses HTTP as its messaging format. REST is generally considered to be more flexible, faster, and easier to use than SOAP, but SOAP has built-in support for more security standards.
JSON and XML are two common formats used for exchanging data in RESTful web services. The main differences between JSON and XML are:
-
Syntax: JSON uses a syntax similar to JavaScript object notation, while XML uses a markup language syntax.
-
Readability: JSON is considered more readable and easier to parse than XML.
-
Size: JSON generally produces smaller payloads than XML, which can be important in bandwidth-constrained environments.
-
Parsing: JSON parsing is generally faster than XML parsing.
-
Schema: XML has a built-in schema mechanism (XSD) for defining the structure of documents, while JSON relies on external schema languages like JSON Schema.
-
Support: JSON is supported by most modern programming languages, while XML has been around for longer and is more widely used in legacy systems.
Ultimately, the choice between JSON and XML will depend on the specific needs of the application and the preferences of the developers working on it.
There are many tools and frameworks available for developing RESTful web services in various programming languages. Here are some of the most common ones:
-
Flask: Flask is a lightweight web framework for Python that provides support for building RESTful APIs.
-
Django: Django is a popular web framework for Python that includes built-in support for creating RESTful web services.
-
Spring Boot: Spring Boot is a popular framework for building web applications in Java, and it provides built-in support for creating RESTful web services.
-
Express: Express is a fast and flexible web framework for Node.js that provides support for building RESTful APIs.
-
Ruby on Rails: Ruby on Rails is a popular web framework for Ruby that includes support for building RESTful web services.
-
ASP.NET Core: ASP.NET Core is a cross-platform framework for building web applications in .NET, and it provides built-in support for creating RESTful web services.
-
Laravel: Laravel is a popular web framework for PHP that provides support for building RESTful APIs.
-
Amazon API Gateway: Amazon API Gateway is a managed service that makes it easy to create, deploy, and manage RESTful APIs.
-
Swagger: Swagger is a tool for designing, building, documenting, and testing RESTful web services.
-
Postman: Postman is a popular tool for testing and debugging RESTful web services, and it also includes features for creating and sharing API documentation.
Security is a critical concern for RESTful web services, and there are several ways to handle it:
-
Authentication: This is the process of verifying the identity of a user or client. The most common authentication methods are Basic Authentication, OAuth, and JSON Web Tokens (JWT).
-
Authorization: Once a user is authenticated, authorization determines what actions they are allowed to perform. This is typically implemented using role-based access control (RBAC) or attribute-based access control (ABAC).
-
SSL/TLS Encryption: This provides a secure communication channel between the client and the server by encrypting the data that is transmitted. SSL/TLS encryption should be used for all communications involving sensitive data, such as passwords, credit card numbers, or personal information.
-
Input validation and output encoding: To prevent attacks like SQL injection or Cross-Site Scripting (XSS), input data should be validated before being processed by the server. Output encoding ensures that any data sent back to the client is properly encoded to prevent malicious scripts from executing.
-
Rate limiting and throttling: These techniques help prevent Denial of Service (DoS) attacks by limiting the number of requests that can be made in a given time period.
-
Monitoring and logging: Logging can help detect and diagnose security issues. Monitoring can help track usage patterns and detect suspicious activity.
-
Regular security audits: Regular security audits can help identify potential vulnerabilities and ensure that security measures are up to date.
Overall, it is important to take a multi-layered approach to security in RESTful web services to ensure that all aspects of the application are protected.
The PUT
and PATCH
methods are both used to update existing resources in a RESTful API, but there are some key differences between the two:
-
Scope of Update:
PUT
is used to update the entire resource with a new representation, whereasPATCH
is used to update only a portion of the resource. -
Idempotency:
PUT
is an idempotent operation, meaning that if you send the same request multiple times, you will get the same result every time. In other words, the operation has no side-effects beyond the initial update.PATCH
, on the other hand, is not necessarily idempotent, since each update could potentially change the state of the resource in a different way. -
Validation: When you use
PUT
, you typically have to send the entire representation of the resource, even if only one field is being updated. This means that the server can validate the entire request before making the update. WithPATCH
, you only send the fields that are being updated, so the server has less information to work with when validating the request.
In summary, PUT
is used to replace the entire resource with a new representation, while PATCH
is used to make a partial update to a resource. Both methods can be used to update resources in a RESTful API, but they have different use cases and semantics.
HTTP stands for Hypertext Transfer Protocol. It is an application protocol that is used to transfer data between a client and a server over the internet. HTTP is the foundation of data communication on the World Wide Web and is used for retrieving HTML pages, images, and other types of content. It defines the syntax and semantics of messages exchanged between a client and a server, including the format of requests and responses. HTTP operates on top of the TCP/IP protocol suite, and it is a stateless protocol, meaning that it does not maintain any state between requests and responses.
The most commonly used web protocols are:
-
HTTP (Hypertext Transfer Protocol) - used for transferring data over the web, most commonly used for fetching resources such as HTML pages, images, and videos from web servers.
-
HTTPS
(HTTP Secure) - a secure version of HTTP that uses encryption to protect data transmitted over the web. -
FTP
(File Transfer Protocol) - used for transferring files between servers and clients over the web. -
SMTP
(Simple Mail Transfer Protocol) - used for sending and receiving email messages over the internet. -
TCP/IP
is a suite of communication protocols used to connect hosts on the internet. It consists of two main protocols: the Transmission Control Protocol (TCP) and the Internet Protocol (IP). TCP provides reliable, ordered, and error-checked delivery of data between applications running on hosts communicating over an IP network, while IP provides the basic routing mechanism to get packets from their source to their destination via the internet. Other protocols that are part of the TCP/IP suite include UDP, ICMP, ARP, and DHCP, among others.
DNS (Domain Name System) - used for translating human-readable domain names into IP addresses, which are used to locate web servers on the internet.
An API Gateway is a server that acts as a single entry point for clients (such as mobile devices or web browsers) to access multiple backend services or APIs (Application Programming Interfaces). The API Gateway acts as an intermediary between the client and the backend services, routing requests from the client to the appropriate service, and then returning the response from the service back to the client.
API Gateways are often used in microservices architectures to provide a centralized point of access to multiple services, making it easier to manage and monitor the APIs. They can also provide additional functionality such as caching, rate limiting, authentication, and authorization, as well as handling tasks such as load balancing and service discovery.
HTTP (Hypertext Transfer Protocol) is a protocol used for communication between a client and a server over the internet. There are three versions of HTTP: HTTP/1, HTTP/2, and HTTP/3. Here are some key differences between them:
HTTP/1
:
- Uses a single request/response at a time
- Requires a new connection to be established for each request
- Has limited support for server push
- Has no built-in support for request or response prioritization
- Has no built-in support for header compression
HTTP/2
:
- Allows multiple requests/responses to be sent concurrently on a single connection, improving performance
- Introduces server push, which allows the server to send additional resources to the client before they are requested
- Introduces request and response prioritization, which allows the client and server to prioritize certain requests and responses over others
- Introduces header compression, which reduces the amount of data sent over the network
HTTP/3
:
- Based on UDP (User Datagram Protocol), unlike HTTP/1 and HTTP/2 which are based on TCP (Transmission Control Protocol)
- Uses QUIC (Quick UDP Internet Connections) as its underlying transport protocol
- Provides enhanced security and performance over HTTP/2, particularly in unreliable network conditions
Overall, HTTP/2 and HTTP/3 offer significant improvements over HTTP/1 in terms of performance and features, and HTTP/3 is expected to become more widely adopted in the coming years.
Swagger is an open-source toolset that is used to design, build, document, and consume RESTful web services. It provides a user-friendly interface for developers to interact with RESTful APIs and also allows for automated testing and client code generation.
Swagger provides a standardized format called OpenAPI Specification, which is used to describe the API's structure and functionality. It includes details such as the available endpoints, parameters, expected responses, and error messages. This documentation can be used by developers, testers, and other stakeholders to understand the API and how to use it.
Swagger also includes tools to generate client libraries in a variety of programming languages, making it easier for developers to consume the API in their applications. Overall, Swagger is a popular tool for building and consuming RESTful APIs, and it has been widely adopted by developers and organizations around the world.
OpenAPI, formerly known as Swagger, is an open-source specification for building and documenting RESTful web services. It provides a standardized way to describe the structure of an API and the available endpoints, as well as the expected requests and responses. OpenAPI allows developers to generate interactive documentation, client libraries, and server stubs based on the API definition. It supports a variety of programming languages and frameworks, making it easy to integrate with existing applications. OpenAPI is widely used in the industry for API development and documentation.
TLS (Transport Layer Security) is a cryptographic protocol used to provide secure communication over a network. It is the successor to SSL (Secure Sockets Layer) and is commonly used to secure web traffic, email, instant messaging, and other types of network communication.
TLS works by encrypting the data being sent between two systems, so that it cannot be read by anyone who intercepts the traffic. It also provides mechanisms for verifying the identity of the parties involved in the communication, to prevent man-in-the-middle attacks and other security threats. TLS uses a combination of symmetric and asymmetric encryption algorithms to achieve its security goals.
In the context of web applications, TLS is commonly used to secure communication between a client's web browser and a web server, by encrypting the HTTP traffic using the HTTPS (HTTP Secure) protocol. This helps to protect sensitive user data such as login credentials, payment information, and other private data from interception and unauthorized access.
SSL (Secure Sockets Layer) is a security protocol used for establishing an encrypted connection between a web server and a web browser. It was developed by Netscape in the mid-1990s and is now considered obsolete, having been replaced by its successor, TLS (Transport Layer Security).
SSL uses a combination of asymmetric and symmetric encryption to ensure the confidentiality, integrity, and authenticity of data transmitted over the internet. When a web browser attempts to connect to a secure website using SSL, the server sends its SSL certificate to the browser, which contains the server's public key. The browser uses this key to encrypt a randomly generated symmetric key, which is then sent to the server. The server uses its private key to decrypt the symmetric key, and both the server and the browser use this key to encrypt and decrypt subsequent data.
While SSL is no longer considered a secure protocol, the term "SSL" is still often used interchangeably with "TLS" to refer to the more modern protocol.
TCP handshake, also known as a three-way handshake or SYN-SYN-ACK handshake, is a process that establishes a connection between two networked devices using the Transmission Control Protocol (TCP).
When a client attempts to establish a TCP connection with a server, the following steps occur during the handshake:
- The client sends a SYN (synchronize) packet to the server with a random sequence number, and its initial value of the client's window size.
- The server receives the SYN packet and replies with a SYN-ACK (synchronize-acknowledgement) packet. The server sends a random sequence number that is used as an acknowledgment number for the SYN packet, and its own initial window size.
- The client receives the SYN-ACK packet, verifies the sequence number, and sends an ACK (acknowledgement) packet back to the server with the server's sequence number incremented by 1.
Once the three-way handshake is complete, the connection is established and data can be transmitted between the client and server.
In the TCP/IP protocol, SYN (synchronize) packet is the first packet that is sent from the client to initiate a connection with the server. It is also known as a SYN packet because it has the SYN flag set in the packet header. The SYN packet is the start of the three-way handshake process that is used to establish a reliable connection between the client and the server.
In the SYN packet, the client sends a request to the server to synchronize the sequence numbers for the data exchange. The SYN packet contains the initial sequence number (ISN) that is used for this synchronization. The server responds with a SYN-ACK (synchronize-acknowledge) packet that contains its own initial sequence number and acknowledges the receipt of the client's SYN packet. Finally, the client sends an ACK (acknowledge) packet to the server, which completes the three-way handshake and establishes a reliable connection for the data exchange.
- Introduction
- Variables
- Data Types
- Numbers
- Casting
- Strings
- Booleans
- Operators
- Lists
- Tuple
- Sets
- Dictionaries
- Conditionals
- Loops
- Functions
- Lambda
- Classes
- Inheritance
- Iterators
- Multi‐Processing
- Multi‐Threading
- I/O Operations
- How can I check all the installed Python versions on Windows?
- Hello, world!
- Python literals
- Arithmetic operators and the hierarchy of priorities
- Variables
- Comments
- The input() function and string operators
Boolean values, conditional execution, loops, lists and list processing, logical and bitwise operations
- Comparison operators and conditional execution
- Loops
- [Logic and bit operations in Python]
- [Lists]
- [Sorting simple lists]
- [List processing]
- [Multidimensional arrays]
- Introduction
- Sorting Algorithms
- Search Algorithms
- Pattern-matching Algorithm
- Graph Algorithms
- Machine Learning Algorithms
- Encryption Algorithms
- Compression Algorithms
- Start a New Django Project
- Migration
- Start Server
- Requirements
- Other Commands
- Project Config
- Create Data Model
- Admin Panel
- Routing
- Views (Function Based)
- Views (Class Based)
- Django Template
- Model Managers and Querysets
- Form
- User model
- Authentification
- Send Email
- Flash messages
- Seed
- Organize Logic
- Django's Business Logic Services and Managers
- TestCase
- ASGI and WSGI
- Celery Framework
- Redis and Django
- Django Local Network Access
- Introduction
- API development
- API architecture
- lifecycle of APIs
- API Designing
- Implementing APIs
- Defining the API specification
- API Testing Tools
- API documentation
- API version
- REST APIs
- REST API URI naming rules
- Automated vs. Manual Testing
- Unit Tests vs. Integration Tests
- Choosing a Test Runner
- Writing Your First Test
- Executing Your First Test
- Testing for Django
- More Advanced Testing Scenarios
- Automating the Execution of Your Tests
- End-to-end
- Scenario
- Python Syntax
- Python OOP
- Python Developer position
- Python backend developer
- Clean Code
- Data Structures
- Algorithms
- Database
- PostgreSQL
- Redis
- Celery
- RabbitMQ
- Unit testing
- Web API
- REST API
- API documentation
- Django
- Django Advance
- Django ORM
- Django Models
- Django Views
- Django Rest Framework
- Django Rest Framework serializers
- Django Rest Framework views
- Django Rest Framework viewsets