Автор оригинала: Olawale Aladeusi.
Быть программистом-значит развивать тщательно управляемые отношения с ошибками. От этого никуда не деться. Вы либо смиритесь с неудачей, либо работа станет невыносимой – Эллен Уллман
Резюме Из Части 1
В части 1 мы рассмотрели, как создать простой RESTful API с четырьмя основными операциями CRUD и аутентификацией с помощью Flask. Мы узнали о настройке среды Flask, создании моделей, выполнении и применении миграций в БД, группировке ресурсов с помощью flask blueprint, проверке подлинности пользователя с помощью токена JWT.
В этой части мы построим оставшиеся четыре конечные точки для ресурса blogpost
API сообщений в блоге
Будут созданы следующие конечные точки
- Создать пост в блоге – POST
api/v1/blog posts
- Получить все сообщения в блоге – GET
api/v1/blog posts
- Get A Blog posts – GET
api/v1/blog posts/post_id> post_id>
- Обновить сообщение в блоге – PUT
api/v1/blog posts/post_id> post_id>
- Удалить сообщение в блоге – DELETE
api/v1/blog posts/post_id> post_id>
Создать сообщение в блоге – POST api/v1/сообщения в блоге
Открыть /src/views/BlogpostView.py
и добавьте следующий код
высокий звук
В приведенном выше коде мы добавили новую конечную точку POST/api/v1/blog post
, которая позволила бы пользователю создать новую запись в блоге. Замечено с добавлением @Auth.auth_required
decorator в create()
функцию, чтобы убедиться, что только аутентифицированные пользователи могут получить доступ к маршруту. Мы также настроили blog post_api
blueprint так, чтобы мы могли сгруппировать все конечные точки блога в одном ресурсе.
Давайте проверим эту конечную точку на почтальоне
Не забудьте добавить api-токен в заголовок, так как мы разрешаем создавать пост только зарегистрированным пользователям
Получить все сообщения в блоге – GET api/v1/blog posts
Get all blog post endpoint получит все доступные записи блога в системе Давайте добавим новую функцию в /src/views/BlogpostView.py
и назовите его get_all
высокий звук
Вы заметите , что мы не добавили @Auth.auth_required
decorator в get_all
, потому что мы хотим сделать эту конечную точку доступной для всех – конечно, вы не хотите быть единственным, кто читает ваши сообщения .
Тест на почтальона
Get A Blog post – GET api/v1/blog posts/post_id> post_id>
Эта конечная точка получит один пост в блоге по своему id
. Точно так же, как Get all endpoint, мы также сделаем это доступным для всех – зарегистрированных пользователей или незарегистрированных пользователей.
высокий звук
Тест на почтальона
Обновить сообщение в блоге – PUT api/v1/blog posts/post_id> post_id>
Прежде чем мы создадим эту конечную точку, нужно кое-что отметить
- Только зарегистрированные пользователи могут получить доступ к этой конечной точке
- Пользователи могут обновлять только свои собственные записи в блоге
- Пользователь не может обновить блогпост другого пользователя Для этого создадим новую функцию и добавим
@Auth.auth_required
декоратор, а также добавим условие, которое проверяет, равен ли постowner_id
идентификатору текущего пользователя. Если owner_id равен user_id, то идите вперед и обновите сообщение, если нет, верните ошибку обратно пользователю
высокий звук
Тест на почтальона
Удалить сообщение в блоге – DELETE api/v1/blog posts/post_id> post_id>
Эта конечная точка позволит пользователю удалить только свой собственный пост – это означает, что пользователь не может удалить пост другого пользователя.
высокий звук
Тест на почтальона
ЗАКЛЮЧЕНИЕ
Эта часть охватывает создание create, get all, get one, update и delete
конечных точек. Мы делаем get all и get one endpoints доступными для всех, а также добавили условие для удаления и обновления конечных точек, чтобы пользователь мог обновлять или удалять только свой собственный пост.
В части 3 этой серии мы напишем модульный тест для нашего приложения, а также разместим его на heroku – вы можете назвать его 2 в 1 пакете.
Нажмите здесь, если вы еще не читали ЧАСТЬ 1
Нажмите здесь , чтобы проверить полный код на Github
Оставляйте свои вопросы, комментируйте и не забудьте поставить лайк этому посту, если вы узнали из него одну или две вещи