Tastypie is a framework for Django that helps programmers to develop RESTful APIs on top of their already existing projects.
As a general rule, each group of endpoints is seen as a resource. When I say a group of endpoints I mean a collection of HTTP methods on a specific route (e.g. GET, POST and DELETE on /api/entity).
These resources have a lot of features, which include allowing you to access the endpoint with specific HTTP methods, permitting access only if you are authenticated, paginating the results etc.
In Tastypie, there are 3 types of endpoints:
List endpoints return a list of objects (as the name implies) and it looks like `host_address/api/entity`.
Detail endpoints return a single instance of an object and it looks similar to the list endpoint, except for the fact that it expects a path param, the ID of the object, to identify the instance that will be returned (e.g. `/api/entity/[id]`).
Custom endpoints are routes made by developers to solve any use-cases different from the default ones. They don't have a specific format, offering devs more freedom.
Each endpoint needs a function to manipulate and return the data. But these functions have a standard format
Now let's focus on what's the steps for a request to be fulfilled on a Tastypie endpoint.
When a request is received from a client, Django checks for any existing routes inside `urlpatterns`, the variable with all the available routes inside the project.
If a pattern was found, Django will call the associated view (function or class) with the following parameters:
If the URL didn't match any pattern, then Django will take care of it via an appropriate error handling view.
Once Django redirects the request to a Tastypie resource, it checks for the available URLs and lets Tastypie do the rest.
Assuming the URL is`host-domain/api/v1/entity/` (which is a list view):
If the view was matched, `Resource.wrap_view('dispatch_list')` is called. The wrap_view method inside the Resource takes care of basic error handling and serialisation for the errors. The 'dispatch_list' parameter means that Resource.dispatch_list will be called next (a thin wrapper around the dispatch method).
The dispatch method makes sure the followings are fulfilled:
The response is generated using the specific class method of the resource. If it's a default endpoint, the methods look like [HTTP_method]_[view_type] (e.g. get_list, post_detail) and if it's a custom endpoint, the method's name is the defined route for the endpoint (e.g. add_more_entries)
The following actions will be done when calling the get_list:
Observation: For POST/PUT, there will be an extra step, the hydrate cycle, that will take the request payload and convert it in raw data, for DB storage
Normal person with peculiar dreams @unkl's protégé @cristianmezei's disciple
My takes after reading the Tastypie documentation, regarding how a request is handled inside an endpoint
More like this
Foreign Key on Models | Django documentation
Save vs Update in Django
Explore the World’s
Take Your Ideas
Just press play and we take care of the words.
No Internet access? No problem. Within the mobile app, all your ideas are available, even when offline.
2 Million Stashers
Best app ever! You heard it right. This app has helped me get back on my quest to get things done while equipping myself with knowledge everyday.
This app is LOADED with RELEVANT, HELPFUL, AND EDUCATIONAL material. It is creatively intellectual, yet minimal enough to not overstimulate and create a learning block. I am exceptionally impressed with this app!
Great interesting short snippets of informative articles. Highly recommended to anyone who loves information and lacks patience.
Don’t look further if you love learning new things. A refreshing concept that provides quick ideas for busy thought leaders.
Even five minutes a day will improve your thinking. I've come across new ideas and learnt to improve existing ways to become more motivated, confident and happier.
Brilliant. It feels fresh and encouraging. So many interesting pieces of information that are just enough to absorb and apply. So happy I found this.
I have only been using it for a few days now, but I have found answers to questions I had never consciously formulated, or to problems I face everyday at work or at home. I wish I had found this earlier, highly recommended!
Great for quick bits of information and interesting ideas around whatever topics you are interested in. Visually, it looks great as well.
Read & Learn
Access to 200,000+ ideas
Access to the mobile app
Unlimited idea saving & library
Unlimited listening to ideas
Downloading & offline access
Supercharge your mind with one idea per day
Enter your email and spend 1 minute every day to learn something new.
I agree to receive email updates