So, over the course of two weeks filled with pain and despair due to sickness, I created a simple API in django rest framework
to learn about itself and also apply concepts like Token Authentication, Scoped Rate Limiting, and how to document APIs to name a few.
Now, realizing that getting data is not so cheap and also scraping someone else's website can put unnessesary load on their website
and their wallet, I'm making whatever data I've collected available to everyone else through these APIs.
Steps to using these APIs
Step 1: Call the /auth/login/
endpoint, or /auth/registration/
if you are a new user, to get back a Token
Note- All demonstration done using httpie, but you can see how to do it using curl in the swagger doc here
http POST https://uselessfacts.fly.dev/auth/login/ username=<your-registered-username> password=<your-registered-password>
OR
http POST https://uselessfacts.fly.dev/auth/registration/ username=<your-choice-of-username> password1=<your-choice-of-password> password2=<same-as-password1>
You'll get back the following response -
{
"key": "c596a03fd15783e14d512c843a7ee4ba84ea77eb"
}
This is the token we were talking about
Step 2: Send this Token as Authorization while calling the v1
APIs to get back the useless facts!
http POST https://uselessfacts.fly.dev/v1/random-fact/ 'Authorization: Token c596a03fd15783e14d512c843a7ee4ba84ea77eb'
OR
http POST https://uselessfacts.fly.dev/v1/fact/145/ 'Authorization: Token c596a03fd15783e14d512c843a7ee4ba84ea77eb'
And upon successful request you'll get back the useless fact like below
{
"data": {
"fact": "California consumes more bottled water than any other product.",
"id": 145
},
"status": "success"
}
You can check out other respones in the swagger documentation here
Now the most important step, like a good person make sure you logout as well!
Step 3: To logout call the /auth/logout/
endpoint with no body with sending the Token in authorization just like we did in the previous step
http POST https://uselessfacts.fly.dev/auth/logout/ 'Authorization: Token c596a03fd15783e14d512c843a7ee4ba84ea77eb'
Upon successful request you should get the following response -
{
"detail": "Successfully logged out."
}
You can explore all the other available endpoints as well as the models in the swagger documentation mentioned above.
You can get in touch with me here or on LinkedIn OR Instagram !
Top comments (0)