# Topic covered
* First Principles
* The stack
* Clean Code
* Programing Paradigms
* Object Oriented Programming
* Design Principles
* Design Patterns
* Architectural Principles
* Architectural Styles
* Architecture Patterns
* Enterprise Patterns
[Read More]
3. LLD and HLD Roadmap
Software and System Design (LLD and HLD) Roadmap
# Topic covered
* When should you start learning System Design?
* High-Level Design (HLD)
* Low-Level Design (LLD)
* Differences Between HLD and LLD
* Macro vs. Micro Architecture and Design
* LLD and HLD Roadmap
[Read More]
2. Testing in SDLC
SDLC, SDLC Phases, SDLC Models, Software Testing, TDD
# Topic covered
* Software Testing
* Type of Software testing
* Manual, Automation
* Software Testing types based on Levels
* Unit, Integration, System, Regression
* Test Case design approach
* AKA - Software Testing Techniques
* White, Black, Gray box testing
* Test Driven Development (TDD)
* Shift Left in Software Testing
* Shift Right in Software Testing
[Read More]
1. Software Development Life Cycle(SDLC)
SDLC, SDLC Phases, SDLC Models, Software Testing, TDD
# Topic covered
* Software Engineering
* History of software engineering
* Software Development Life Cycle(SDLC)
* SDLC Phases
* SDLC Models
* Classical Waterfall model
* Iterative Waterfall Model
* Prototype Model
* Incremental Model
* Spiral Model
* Agile Model
[Read More]
8. Authentication & Permissions
TokenAuthentication, SessionAuthentication, BasicAuthentication
8.1 Authentication
Authentication is the mechanism of identifying/verifies a user during an incoming request.
Authentication gives us some advanced behavior
like:
* Restriction on create, update or delete
* Unauthenticated requests should have read-only access.
* Adding throttling policies
[Read More]
9. TokenAuthentication
Django-rest-auth, Dj-rest-auth
9. TokenAuthentication
The token authentication works by exchanging username and password for a token
that will be used
in all subsequent requests so to identify the user on the server side.
Token authentication is suitable for client-server applications
, where the token is safely stored.
You should never expose your token, as it would be (sort of) equivalent of a handing out your username and password.
7. Relationships & Hyperlinked APIs
ModelSerializer, HyperlinkedModelSerializer
ModelSerializer vs HyperlinkedModelSerializer
- ModelSerializer
- By default, Relationship will show –>
as primary keys
- By default, Relationship will show –>
- HyperlinkedModelSerializer
- By default, Relationship will show –>
as url
- By default, Relationship will show –>
6. DRF ViewSets & Routers
ViewSet, ModelViewSet, ReadOnlyModelViewSet, GenericViewSet
6.1 ViewSets
ViewSet classes are almost the same thing as View classes, except that they provide operations
such as retrieve, or update, and not method handlers
such as get or put.
In other word ViewSet class is simply a type of class-based View
, that does not provide any method handlers
such as .get() or .post(),
and instead provides operations/actions
such as .list() and .create().
5. DRF Class-based Views
APIview, Mixins, Generic - Class Based Views
Class-based Views
Keep our code DRY
(Don’t repeat yourself).
One of the big wins of using class-based views is that it allows us to easily compose reusable bits
of behaviour.
# Types
* APIview
* Mixins
* Generic
[Read More]
4. DRF Function based View
Requests and Responses, Function based View
Request Object
REST framework introduces a Request object
that extends the regular HttpRequest, and provides more flexible request parsing.
The core functionality of the Request object is the request.data
attribute, which is similar to request.POST
, but more useful for working with Web APIs.
- request.POST
- Only handles
form data
. - Only works for
'POST' method
.
- Only handles
- request.data
- Handles arbitrary data.
- Works for ‘POST’, ‘PUT’ and ‘PATCH’ methods.