Рубрики
Без рубрики

Создание API-интерфейсов RESTful Blog с использованием python и flask – Часть 2

Быть программистом-значит развивать тщательно управляемые отношения с ошибками. От этого никуда не деться. Вы либо смиритесь с неудачей, либо работа станет невыносимой…

Автор оригинала: 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 так, чтобы мы могли сгруппировать все конечные точки блога в одном ресурсе.

Давайте проверим эту конечную точку на почтальоне

Снимок экрана 2018-07-28 в 2.38.00 вечера.png

Не забудьте добавить api-токен в заголовок, так как мы разрешаем создавать пост только зарегистрированным пользователям

Получить все сообщения в блоге – GET api/v1/blog posts

Get all blog post endpoint получит все доступные записи блога в системе Давайте добавим новую функцию в /src/views/BlogpostView.py и назовите его get_all

высокий звук

Вы заметите , что мы не добавили @Auth.auth_required decorator в get_all , потому что мы хотим сделать эту конечную точку доступной для всех – конечно, вы не хотите быть единственным, кто читает ваши сообщения .

Тест на почтальона

Снимок экрана 2018-07-28 в 2.39.43 вечера.png

Get A Blog post – GET api/v1/blog posts/post_id> post_id>

Эта конечная точка получит один пост в блоге по своему id . Точно так же, как Get all endpoint, мы также сделаем это доступным для всех – зарегистрированных пользователей или незарегистрированных пользователей.

высокий звук

Тест на почтальона

Снимок экрана 2018-07-28 в 2.40.34 PM.png

Обновить сообщение в блоге – PUT api/v1/blog posts/post_id> post_id>

Прежде чем мы создадим эту конечную точку, нужно кое-что отметить

  • Только зарегистрированные пользователи могут получить доступ к этой конечной точке
  • Пользователи могут обновлять только свои собственные записи в блоге
  • Пользователь не может обновить блогпост другого пользователя Для этого создадим новую функцию и добавим @Auth.auth_required декоратор, а также добавим условие, которое проверяет, равен ли пост owner_id идентификатору текущего пользователя. Если owner_id равен user_id, то идите вперед и обновите сообщение, если нет, верните ошибку обратно пользователю

высокий звук

Тест на почтальона

Снимок экрана 2018-07-28 в 2.41.25 вечера.png

Удалить сообщение в блоге – DELETE api/v1/blog posts/post_id> post_id>

Эта конечная точка позволит пользователю удалить только свой собственный пост – это означает, что пользователь не может удалить пост другого пользователя.

высокий звук

Тест на почтальона

Снимок экрана 2018-07-28 в 2.42.04 вечера.png

ЗАКЛЮЧЕНИЕ

Эта часть охватывает создание create, get all, get one, update и delete конечных точек. Мы делаем get all и get one endpoints доступными для всех, а также добавили условие для удаления и обновления конечных точек, чтобы пользователь мог обновлять или удалять только свой собственный пост.

В части 3 этой серии мы напишем модульный тест для нашего приложения, а также разместим его на heroku – вы можете назвать его 2 в 1 пакете.

Нажмите здесь, если вы еще не читали ЧАСТЬ 1

Нажмите здесь , чтобы проверить полный код на Github

Оставляйте свои вопросы, комментируйте и не забудьте поставить лайк этому посту, если вы узнали из него одну или две вещи