Barcha loyihalar
Boshlang'ichAPI

Blog platformasi API'si

Shaxsiy blog platformasi uchun RESTful API yarating

PythonBackendNode.jsJavaSpring BootGoPHPProgramming LanguageCRUDRESTful APIDatabase

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

Yo'l xaritalariQo'llanmalarFAQYouTube

yo'lxaritaroadmap.shasosida

Hamjamiyat tomonidan yaratilgan yo'l xaritalari, eng yaxshi amaliyotlar, loyihalar, maqolalar, manbalar va yo'nalishlar — o'z yo'lingizni tanlash va kasbingizda o'sish uchun.

© yo'lxarita·Shartlar·Maxfiylik·

roadmap.sh

Barcha kontent roadmap.sh loyihasidan olingan (© Kamran Ahmed) va shaxsiy o'rganish uchun o'zbek tiliga tarjima qilinmoqda.

Qidiruv

Yo'l xaritalari, loyihalar va savollarni qidiring