Skip to content

Latest commit

 

History

History
154 lines (112 loc) · 6.18 KB

README.md

File metadata and controls

154 lines (112 loc) · 6.18 KB

Сайт с анекдотами

Идея нашего сайта заключена в создании подобия соц. Сети для анекдотов, в которой можно будет добавить свои анекдоты, оценивать их, комментировать и т.д.

Из интересеного:

Во время тестирования, сайт был 3 в поиске яндекса по запросу "смешные анекдоты"

API настройка

  • Перед началом работы с API сервисом создайте папку db в корневой дирректории(в папке с app.py), если таковая отсутствует.
  • Для установки всех необходимых библиотек используйте команду pip install -r requirements.txt в терминале корневой папки.
  • Запуск тестов сервера: pytest (в терминале папки с программой). Если не сработает, то pytest test_api.py

API функционал

  • API собой представляют полную реализацию работы сайта на языке запросов.
  • Примеры запросов увидеть в файле test_api.py

User

Регистрация нескольких пользователей. Доступно только админу

json_request = {"data": [{"name": "Саша",
                              "email": "[email protected]",
                              "password": "password1"},
                             {"name": "Маша",
                              "email": "[email protected]",
                              "password": "password2"},
                             {"name": "Саша",
                              "email": "[email protected]",
                              "password": "password3"}
                             ]}

response = client.post("/api/users", json=json_request,
                       auth=('user', 'pass'))
response.status_code -> 201
response.data -> {"users": [{"email": "[email protected]"},
                            {"email": "[email protected]"},
                            {"email": "[email protected]"}]}

Регистрация одного пользователя. Доступно всем

json_data = {"name": "Даша",
             "email": "[email protected]",
             "password": "password4"}
response = client.post("/api/users/personal_register", json=json_data)
response.status_code -> 201
response.data -> {"email": "[email protected]"}

Патч Пользователя

json_request = {"name": "Саша"}
response = client.patch("/api/users/3", json=json_request,
                        auth=('user', 'pass')})

response.status_code -> 200
response.data -> {"user": {"name": "Саша",
                            "email": "[email protected]",
                            "id": 3}}

Бан Пользователя. Доступно только админам

response = client.delete("/api/users/3",
                         auth=('user', 'pass'))

response.status_code -> 200
response.data -> {"banned_id": 3}

Anecdote

Создание одного анекдота

json_data = {"name": "Test4",
             "text": "test",
             "category": "Улитка в баре"}

response = client.post("/api/anecdote", json=json_data,
                       auth=('user', 'pass'))
response.status_code -> 201

Создание нескольких анекдотов сразу

json_data = {"data": [{"name": "Test1",
                       "text": "test",
                       "category": "Улитка в баре"},
                      {"name": "Test2",
                       "text": "test",
                       "category": "Улитка в баре"},
                      {"name": "Test3",
                       "text": "test",
                       "category": "Улитка в баре"}]}

response = client.post("/api/anecdotes", json=json_data,
                       auth=('user', 'pass'))

response.status_code -> 201
response.data -> {"anecdotes": [{"name": "Test1"},
                                {"name": "Test2"},
                                {"name": "Test3"}]}

Модерация анекдотов. Доступна только админам

json_data = {"anecdote_id": 1,
             "is_published": 1}
response = client.patch("/api/anecdotes/moderate", json=json_data,
                        auth=('user', 'pass'))

response.status_code -> 200
response.data -> {"id": 1}

Получить рандомный анекдот

response = client.get("/api/anecdote")
response.status_code -> 200
response.data -> {"anecdote": {anecdote_data}}

Category

Создание категории. Доступно только админам

json_data = {"title": "Улитка в баре"}
response = client.post("/api/categories", json=json_data,
                       auth=('user', 'pass'))

response.status_code -> 201
response.data -> {"title": "Улитка в баре"}

Comment

Создание комментария

json_data = {"anecdote_id": 1,
             "text": "good anec"}
response = client.post("/api/comments", json=json_data,
                       auth=('user', 'pass'))
response.status_code -> 201

Удаление комментария. Доступно админу и создателю

json_data = {"comment_id": 1}
response = client.delete("/api/comments", json=json_data,
                         auth=('user', 'pass'))
response.status_code -> 200

Likes

Убрать/поставить лайк/дизлайк(в зависимости от параметра value)

json_data = {"anecdote_id": 1,
             "value": -1}
response = client.post("/api/likes", json=json_data,
                       auth=('user', 'pass'))
response.status_code -> 201