Blog platformasi API'si
Shaxsiy blog platformasi uchun RESTful API yarating
Siz shaxsiy blog platformasi uchun asosiy CRUD operatsiyalariga ega oddiy RESTful API yaratishingiz kerak. CRUD — Create, Read, Update va Delete (yaratish, o'qish, yangilash va o'chirish) so'zlarining qisqartmasi.
Maqsadlar
Bu loyihaning maqsadi sizga quyidagilarda yordam berish:
- RESTful API'lar nima ekanini, jumladan, ularning best practice'lari va convention'larini tushunish
- RESTful API yaratishni o'rganish
- GET, POST, PUT, PATCH, DELETE kabi keng tarqalgan HTTP metodlarini o'rganish
- API'lardagi status code'lar va error handling haqida o'rganish
- API yordamida CRUD operatsiyalarini bajarishni o'rganish
- Ma'lumotlar bazalari bilan ishlashni o'rganish
Talablar
Siz shaxsiy blog platformasi uchun RESTful API yaratishingiz kerak. API foydalanuvchilarga quyidagi operatsiyalarni bajarish imkonini berishi kerak:
- Yangi blog post yaratish
- Mavjud blog post'ni yangilash
- Mavjud blog post'ni o'chirish
- Bitta blog post'ni olish
- Barcha blog post'larni olish
- Blog post'larni qidiruv so'zi bo'yicha filtrlash
Quyida har bir API operatsiyasi bo'yicha batafsil ma'lumot berilgan.
Blog post yaratish
POST metodi yordamida yangi blog post yarating
POST /posts
{
"title": "My First Blog Post",
"content": "This is the content of my first blog post.",
"category": "Technology",
"tags": ["Tech", "Programming"]
}
Har bir blog post quyidagi maydonlarga ega bo'lishi kerak:
{
"title": "My First Blog Post",
"content": "This is the content of my first blog post.",
"category": "Technology",
"tags": ["Tech", "Programming"]
}
Endpoint request body'ni validate qilishi va yangi yaratilgan blog post bilan birga 201 Created status code'ini qaytarishi kerak, ya'ni:
{
"id": 1,
"title": "My First Blog Post",
"content": "This is the content of my first blog post.",
"category": "Technology",
"tags": ["Tech", "Programming"],
"createdAt": "2021-09-01T12:00:00Z",
"updatedAt": "2021-09-01T12:00:00Z"
}
yoki validation xatolari bo'lsa, xato xabarlari bilan birga 400 Bad Request status code'ini qaytarishi kerak.
Blog post'ni yangilash
PUT metodi yordamida mavjud blog post'ni yangilang
PUT /posts/1
{
"title": "My Updated Blog Post",
"content": "This is the updated content of my first blog post.",
"category": "Technology",
"tags": ["Tech", "Programming"]
}
Endpoint request body'ni validate qilishi va yangilangan blog post bilan birga 200 OK status code'ini qaytarishi kerak, ya'ni:
{
"id": 1,
"title": "My Updated Blog Post",
"content": "This is the updated content of my first blog post.",
"category": "Technology",
"tags": ["Tech", "Programming"],
"createdAt": "2021-09-01T12:00:00Z",
"updatedAt": "2021-09-01T12:30:00Z"
}
yoki validation xatolari bo'lsa, xato xabarlari bilan birga 400 Bad Request status code'ini qaytarishi kerak. Agar blog post topilmasa, 404 Not Found status code'ini qaytarishi kerak.
Blog post'ni o'chirish
DELETE metodi yordamida mavjud blog post'ni o'chiring
DELETE /posts/1
Agar blog post muvaffaqiyatli o'chirilsa, endpoint 204 No Content status code'ini, blog post topilmasa esa 404 Not Found status code'ini qaytarishi kerak.
Blog post'ni olish
GET metodi yordamida bitta blog post'ni oling
GET /posts/1
Endpoint blog post bilan birga 200 OK status code'ini qaytarishi kerak, ya'ni:
{
"id": 1,
"title": "My First Blog Post",
"content": "This is the content of my first blog post.",
"category": "Technology",
"tags": ["Tech", "Programming"],
"createdAt": "2021-09-01T12:00:00Z",
"updatedAt": "2021-09-01T12:00:00Z"
}
yoki blog post topilmasa, 404 Not Found status code'ini qaytarishi kerak.
Barcha blog post'larni olish
GET metodi yordamida barcha blog post'larni oling
GET /posts
Endpoint blog post'lar massivi bilan birga 200 OK status code'ini qaytarishi kerak, ya'ni:
[
{
"id": 1,
"title": "My First Blog Post",
"content": "This is the content of my first blog post.",
"category": "Technology",
"tags": ["Tech", "Programming"],
"createdAt": "2021-09-01T12:00:00Z",
"updatedAt": "2021-09-01T12:00:00Z"
},
{
"id": 2,
"title": "My Second Blog Post",
"content": "This is the content of my second blog post.",
"category": "Technology",
"tags": ["Tech", "Programming"],
"createdAt": "2021-09-01T12:30:00Z",
"updatedAt": "2021-09-01T12:30:00Z"
}
]
Bu loyiha uchun pagination, authentication yoki authorization'ni amalga oshirishingiz shart emas. API'ning asosiy funksionalligiga e'tibor qaratishingiz mumkin.
Post'larni olishda foydalanuvchi ularni qidiruv so'zi bo'yicha filtrlashi ham mumkin. Siz blog post'larning title, content yoki category maydonlari bo'yicha wildcard search bajarishingiz kerak. Masalan:
GET /posts?term=tech
Bu so'rov title, content yoki category maydonida "tech" so'zi bo'lgan barcha blog post'larni qaytarishi kerak. Agar SQL ma'lumotlar bazasidan foydalanayotgan bo'lsangiz, oddiy SQL query'dan, NoSQL ma'lumotlar bazasida esa shunga o'xshash query'dan foydalanishingiz mumkin.
<hr />
Tech stack
Bu loyiha uchun o'zingiz tanlagan istalgan dasturlash tili, freymvork va ma'lumotlar bazasidan bemalol foydalanishingiz mumkin. Quyida ba'zi tavsiyalar keltirilgan:
- Agar JavaScript'dan foydalanayotgan bo'lsangiz, Node.js va Express.js'dan foydalanishingiz mumkin
- Agar Python'dan foydalanayotgan bo'lsangiz, Flask yoki Django'dan foydalanishingiz mumkin
- Agar Java'dan foydalanayotgan bo'lsangiz, Spring Boot'dan foydalanishingiz mumkin
- Agar Ruby'dan foydalanayotgan bo'lsangiz, Ruby on Rails'dan foydalanishingiz mumkin
Ma'lumotlar bazalari uchun quyidagilardan foydalanishingiz mumkin:
- SQL'dan foydalanayotgan bo'lsangiz, MySQL
- NoSQL'dan foydalanayotgan bo'lsangiz, MongoDB