Barcha loyihalar
Boshlang'ichAPI

Todo List API

Foydalanuvchilarga o'z to-do ro'yxatini boshqarish imkonini beradigan RESTful API yarating.

PythonBackendNode.jsJavaSpring BootGoPHPRESTful APIDatabaseCRUD OperationsData ModelingAuthentication

Bu loyihada sizdan foydalanuvchilarga o'z to-do ro'yxatini boshqarish imkonini beradigan RESTful API ishlab chiqish talab etiladi. Oldingi backend loyihalari faqat CRUD operatsiyalariga qaratilgan edi, bu loyihada esa foydalanuvchi authentication'ini ham amalga oshirishingiz kerak bo'ladi.

Todo List API

Maqsadlar

Bu loyihadan o'rganadigan ko'nikmalaringiz:

  • Foydalanuvchi authentication'i
  • Schema design va ma'lumotlar bazalari
  • RESTful API design
  • CRUD operatsiyalari
  • Error handling
  • Xavfsizlik

Talablar

Sizdan quyidagi endpoint'larga ega RESTful API ishlab chiqish talab etiladi

  • Yangi foydalanuvchi yaratish uchun foydalanuvchini ro'yxatdan o'tkazish
  • Foydalanuvchini authenticate qilish va token yaratish uchun login endpoint'i
  • To-do ro'yxatini boshqarish uchun CRUD operatsiyalari
  • To-do ro'yxatiga faqat authorization'dan o'tgan foydalanuvchilar kira olishi uchun foydalanuvchi authentication'ini amalga oshiring
  • Error handling va xavfsizlik choralarini amalga oshiring
  • Foydalanuvchi va to-do ro'yxati ma'lumotlarini saqlash uchun ma'lumotlar bazasidan foydalaning (o'zingiz tanlagan istalgan ma'lumotlar bazasidan foydalanishingiz mumkin)
  • Ma'lumotlarni to'g'ri validatsiya qilishni amalga oshiring
  • To-do ro'yxati uchun pagination va filtrlashni amalga oshiring

Quyida endpoint'lar ro'yxati hamda so'rov va javob tafsilotlari keltirilgan:

Foydalanuvchini ro'yxatdan o'tkazish

Quyidagi so'rov yordamida yangi foydalanuvchini ro'yxatdan o'tkazing:

POST /register
{
  "name": "John Doe",
  "email": "john@doe.com",
  "password": "password"
}

Bu endpoint berilgan ma'lumotlarni validatsiya qiladi, email noyob ekaniga ishonch hosil qiladi va foydalanuvchi ma'lumotlarini ma'lumotlar bazasida saqlaydi. Parolni ma'lumotlar bazasida saqlashdan oldin albatta hash qiling. Ro'yxatdan o'tish muvaffaqiyatli bo'lsa, authentication uchun ishlatilishi mumkin bo'lgan token bilan javob qaytaring.

{
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9"
}

Token JWT yoki authentication uchun ishlatilishi mumkin bo'lgan tasodifiy satr bo'lishi mumkin. Amalga oshirish tafsilotlarini hal qilishni sizga qoldiramiz.

Foydalanuvchining tizimga kirishi

Quyidagi so'rov yordamida foydalanuvchini authenticate qiling:

POST /login
{
  "email": "john@doe.com",
  "password": "password"
}

Bu endpoint berilgan email va parolni tekshiradi va authentication muvaffaqiyatli bo'lsa, token bilan javob qaytaradi.

{
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9"
}

To-do elementini yaratish

Quyidagi so'rov yordamida yangi to-do elementini yarating:

POST /todos
{
  "title": "Buy groceries",
  "description": "Buy milk, eggs, and bread"
}

So'rovni authenticate qilish uchun foydalanuvchi login endpoint'idan olingan token'ni header'da yuborishi kerak. Buning uchun qiymati token bo'lgan Authorization header'idan foydalanishingiz mumkin. Agar token yo'q yoki yaroqsiz bo'lsa, xato va 401 status code bilan javob qaytaring.

{
  "message": "Unauthorized"
}

To-do elementi muvaffaqiyatli yaratilgach, yaratilgan element tafsilotlari bilan javob qaytaring.

{
  "id": 1,
  "title": "Buy groceries",
  "description": "Buy milk, eggs, and bread"
}

To-do elementini yangilash

Quyidagi so'rov yordamida mavjud to-do elementini yangilang:

PUT /todos/1
{
  "title": "Buy groceries",
  "description": "Buy milk, eggs, bread, and cheese"
}

Todo yaratish endpoint'idagi kabi, foydalanuvchi olingan token'ni yuborishi kerak. Shuningdek, foydalanuvchida to-do elementini yangilash huquqi borligini, ya'ni u yangilayotgan todo elementining muallifi ekanini albatta tekshiring. Agar foydalanuvchida elementni yangilash huquqi bo'lmasa, xato va 403 status code bilan javob qaytaring.

{
  "message": "Forbidden"
}

To-do elementi muvaffaqiyatli yangilangach, elementning yangilangan tafsilotlari bilan javob qaytaring.

{
  "id": 1,
  "title": "Buy groceries",
  "description": "Buy milk, eggs, bread, and cheese"
}

To-do elementini o'chirish

Quyidagi so'rov yordamida mavjud to-do elementini o'chiring:

DELETE /todos/1

To-do elementini o'chirish uchun foydalanuvchi authentication va authorization'dan o'tgan bo'lishi kerak. Muvaffaqiyatli o'chirilgach, 204 status code bilan javob qaytaring.

To-do elementlarini olish

Quyidagi so'rov yordamida to-do elementlari ro'yxatini oling:

GET /todos?page=1&limit=10

Vazifalarga kirish uchun foydalanuvchi authentication'dan o'tgan bo'lishi kerak va javob pagination qilingan bo'lishi kerak. To-do elementlari ro'yxatini pagination tafsilotlari bilan birga qaytaring.

{
  "data": [
    {
      "id": 1,
      "title": "Buy groceries",
      "description": "Buy milk, eggs, bread"
    },
    {
      "id": 2,
      "title": "Pay bills",
      "description": "Pay electricity and water bills"
    }
  ],
  "page": 1,
  "limit": 10,
  "total": 2
}

Bonus

  • To-do ro'yxati uchun filtrlash va saralashni amalga oshiring
  • API uchun unit test'lar yozing
  • API uchun rate limiting va throttling'ni amalga oshiring
  • Authentication uchun refresh token mexanizmini amalga oshiring

<hr />

Bu loyiha foydalanuvchi authentication'iga ega RESTful API'ni qanday loyihalash va amalga oshirishni tushunishingizga yordam beradi. Shuningdek, ma'lumotlar bazalari bilan ishlash, xatolarni qayta ishlash va xavfsizlik choralarini amalga oshirishni o'rganasiz.

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