Skip to content

KasperSaint07/BlogAPI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Django Blog API

A simple blog-style REST API built with Django REST Framework and JWT auth.

Users can register, get a token, and create posts.
Only the author of a post can update or delete it.

Features

  • JWT auth (access / refresh tokens)
  • Register new users via API (/api/register/)
  • Login to get JWT (/api/token/)
  • Refresh token (/api/token/refresh/)
  • CRUD for posts (/api/posts/)
  • Only the owner can edit/delete their post
  • Read-only access (GET) allowed without auth
  • Admin panel at /admin/

Endpoints

Auth

Register

POST /api/register/
{
  "username": "testuser",
  "password": "Testpass123!"
}


POST /api/token/
{
  "username": "testuser",
  "password": "Testpass123!"
}


{
  "refresh": "<refresh_token>",
  "access": "<access_token>"
}


POST /api/token/refresh/
{
  "refresh": "<refresh_token>"
}


GET /api/posts/


POST /api/posts/
{
  "title": "My first post",
  "body": "Hello API world"
}



Tech stack

Python 3.11

Django 5

Django REST Framework

djangorestframework-simplejwt (JWT auth)

SQLite (local dev DB)

config/
  settings.py      # REST_FRAMEWORK, JWT auth, installed apps
  urls.py          # routes /api/
posts/
  models.py        # Post model
  serializers.py   # PostSerializer
  permissions.py   # IsOwnerOrReadOnly
  views.py         # PostViewSet + register_user
  urls.py          # /api/posts/, /api/token/, /api/register/
manage.py          # Django entry point
db.sqlite3         # local DB (dev)


RUN LOCALLY

python -m venv venv
venv\Scripts\activate

pip install -r requirements.txt

python manage.py migrate
python manage.py createsuperuser

python manage.py runserver


Then:

API browser: http://127.0.0.1:8000/api/

Admin: http://127.0.0.1:8000/admin/

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages