krivse / API_Yatube

πŸ”–βœοΈπŸ–‡Πš ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ сСти - Yatube Π±Ρ‹Π»Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° API, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ всС Π²ΠΈΠ΄Ρ‹ запросов. Π—Π΄Π΅ΡΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ возмоТности: публикация ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ записСй, Π° Π΅Ρ‰Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒΡΡ ΠΈΠ»ΠΈ ΠΎΡ‚ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ Π°Π²Ρ‚ΠΎΡ€ΠΎΠ². К Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ прСдоставляСтся готовая докумСнтация ReDoc.

Home Page:https://github.com/krivse/Yatube

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

API_yatube

Python Django DjangoREST JWT Postman

ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ RESTful API для Yatube

ОписаниС

ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Yatube - Π±Π»ΠΎΠ³Π°, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ создали API для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ запросов. Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π²ΠΈΠ΄Ρ‹ запросов: GET, POST, PATCH, PUT, DELETE

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»

  • Подписка ΠΈ отписка ΠΎΡ‚ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ;

  • Авторизованный ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ просматриваСт посты, создавёт Π½ΠΎΠ²Ρ‹Π΅, удаляСт ΠΈ измСняСт ΠΈΡ…;

  • ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ сообщСств;

  • ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, просмотр, ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π²;

  • Π€Π»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ ΠΏΠΎ полям.

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° всСх Π²ΠΈΠ΄ΠΎΠ² запросов для постов (ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ, ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ, ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ, ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ), для 3-Ρ… послСдних трСбуСтся ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ permissions:

Как Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚:

ΠšΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² Π½Π΅Π³ΠΎ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС:

git clone git@github.com:krivse/API_Yatube.git

CΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅:

python3 -m venv venv
# для OS Lunix и MacOS
source venv/bin/activate

# для OS Windows
source venv/Scripts/activate

Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ зависимости ΠΈΠ· Ρ„Π°ΠΉΠ»Π° requirements.txt:

python3 -m pip install --upgrade pip

pip install -r requirements.txt

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ:

cd yatube
python3 manage.py makemigrations
python3 manage.py migrate

Π—Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚:

python3 manage.py runserver

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ запросов

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠΊΠ΅Π½Π°

ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ POST-запрос Π½Π° адрСс api/v1/jwt/create/ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ 2 поля Π² data:

  • username - Π»ΠΎΠ³ΠΈΠ½ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.
  • password - ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ поста

ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ POST-запрос Π½Π° адрСс api/v1/posts/ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ»Π΅ text, Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Authorization:Bearer <Ρ‚ΠΎΠΊΠ΅Π½>.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ запроса:

{
  "text": "testpost"
}

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΡ‚Π²Π΅Ρ‚Π°:

{
  "id": 1,

  "author": "krivse",

  "text": "testpost",

  "pub_date": "2022-07-22T12:12:22.021094Z",

  "image": null,

  "group": null
}

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ поста ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ POST-запрос Π½Π° адрСс api/v1/posts/{post_id}/comments/ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля post ΠΈ text, Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Authorization:Bearer <Ρ‚ΠΎΠΊΠ΅Π½>.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ запроса:

{
  "post": 1,
  "text": "test"
}

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΡ‚Π²Π΅Ρ‚Π°:

{
 "id": 1,
 "author": "krivse",
 "text": "test",
 "created": "2022-07-22T12:12:13.146875Z",
 "post": 1
}

РСсурсы

ДокумСнтация ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°: http://127.0.0.1:8000/redoc/

Удобная ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΊΠ° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с запросамия: https://www.postman.com/

Автор - Иван ΠšΡ€Π°ΡΠ½ΠΈΠΊΠΎΠ², 2022

About

πŸ”–βœοΈπŸ–‡Πš ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ сСти - Yatube Π±Ρ‹Π»Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° API, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ всС Π²ΠΈΠ΄Ρ‹ запросов. Π—Π΄Π΅ΡΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ возмоТности: публикация ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ записСй, Π° Π΅Ρ‰Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒΡΡ ΠΈΠ»ΠΈ ΠΎΡ‚ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ Π°Π²Ρ‚ΠΎΡ€ΠΎΠ². К Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ прСдоставляСтся готовая докумСнтация ReDoc.

https://github.com/krivse/Yatube


Languages

Language:Python 99.0%Language:HTML 1.0%