Crud что это
Перейти к содержимому

Crud что это

  • автор:

Что такое CRUD-приложение, и для чего он нужен?

Maksclub

По всей видимости, приложение должно обеспечивать 4 операции с какой-то сущностью. Очень часто фреймворки могут автоматически генерировать код для таких операций.

Ответ написан более трёх лет назад
Нравится 8 1 комментарий

ThunderCat

ThunderCat @ThunderCat Куратор тега Веб-разработка

Практически любой сайт можно назвать CRUD-приложением.
CREATE, UPDATE, DELETE — например, комментарии пользователей, или наполнение сайта информацией контент-менеджером через админку. READ, соответственно, самая базовая операция по получению информации из БД. Открыли главную страницу — вот и READ.

Ответ написан более трёх лет назад
Комментировать
Нравится 4 Комментировать

Если утрировать и свести к частному, то CRUD — это набор функций для работы с базой данных. Чтобы при каждом обращении к базе не писать громоздкие и неудобные всякие селекты на SQL, используется CRUD, который уже есть в современных фреймворках. При работе с базой как раз и применяются эти четыре операции — создание (create), чтение (read), обновление (update), удаление (delete). Иногда новичкам советуют самостоятельно написать CRUD-интерфейс (например, на «голом» PHP), так сказать, изобрести свой велосипед, чтобы лучше разобраться в самом языке и его тонкостях.

Ответ написан более трёх лет назад
Комментировать
Нравится 4 Комментировать
Php Developer

Так википедии написано.
это простейшее приложение которое позволяет создать, прочесть, обновить, удалить сущность, классический пример, если очень грубо описать: есть таблица пользователей, так вот круд приложение позволяет создать, прочесть, обновить, удалить пользователя в таблице

Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать

ZXZs

Люблю программирование и IT-бизнес в частности =)
CRUD это система управления базами данных. Позволяет создавать, читать, изменять и удалять таблицы.
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

веб-разработка

  • Веб-разработка

Возможно ли восстановить сайт?

  • 2 подписчика
  • 3 часа назад
  • 144 просмотра

веб-разработка

  • Веб-разработка

Как web.telegram.org сделал, что не видно в Network запросов?

  • 1 подписчик
  • 9 часов назад
  • 77 просмотров

Crud что это

CRUD-модель и ее использование. Введение

В информационных системах мы работаем с данными. Добавляя или меняя очередную функциональность, я всегда прокручиваю в голове комбинацию из четырех букв — CRUD:

  • Create — Создавать,
  • Read — Читать,
  • Update — Обновлять,
  • Delete — Удалять.

Что такое CRUD-модель, чем она полезна, как ее применять при анализе требований и проектировании систем? Ответы на эти вопросы я хочу разобрать и показать на примерах.

Над любыми данными возможно выполнить эти операции. Но не всегда можно. Все зависит от контекста системы.

Для каждой операции я продумываю логику и ограничения. Например, в интернет-магазине покупатель может:

  • Выбрать товары и создать заказ.
  • Просматривать:
    • свой заказ,
    • историю своих заказов.
    • поменять товары в нем,
    • изменить статус — оплатить, отменить, или оформить возврат на оплаченный заказ,
    • ввести промокод, получить скидку, и поменять его стоимость.

    А с другой стороны есть менеджер интернет-магазина. Он может:

    • Выбрать товары и создать заказ для покупателя.
    • Просматривать:
      • подробную информацию о заказе любого покупателя,
      • общий список заказов интернет-магазина,
      • историю заказов выбранного покупателя.
      • поменять товары в нем,
      • изменить статус — оплатить, отменить, сделать возврат средств,
      • ввести промокод, чтобы дать скидку покупателю, и поменять стоимость заказа.

      Я покажу, как я превратила знания о CRUD-интерфейсе, которым пользуются разработчики при работе с БД, в правила анализа требований и проектирования. Я называю их CRUD-моделью.

      CRUD-модель — это набор возможностей работы с данными, которые позволяют проверить полноту требований к разработке систем. Представить ее можно в виде таблицы:

      Роль — пользователь, который взаимодействует с данными. Почти во всех системах есть разделение на пользователей с ограниченными правами, и администраторов, которые могут все. Количество ролей ограничивается только требованиями заказчика.
      Пример:
      В интернет-магазине есть роль покупателя, который делает заказ, и роль менеджера, который обрабатывает заказ.

      Количество объектов — количество записей в базе данных, для которых выполнится CRUD-операция.
      Пример для Read:
      В Интернет-магазине можно получить список товаров с ограниченным набором данных о каждом (много товаров). А если выбрать конкретный товар в списке, то можно получить детальную информацию о нем (один товар).

      В следующей статье я разберу пример, на котором хочу показать, как работает CRUD-модель в боевых условиях: управление каталогом товаров магазина.

      Что такое CRUD?

      img

      Построение модели API требует стратегического подхода, и он связан с CRUD. Направляя разработчиков целиком и полностью, CRUD прокладывает путь для разработчиков API, ведя их по пути разработки доработанных и высококлассных API.

      CRUD

      Что такое CRUD?

      CRUD – это сокращение от Create (создание), Read (чтение), Update (модификация) и Delete (удаление). Эти четыре функции являются ключевыми принципами, которым следуют разработчики и программисты API при создании надежных API. В соответствии с отраслевым стандартом каждая модель API должна следовать всем этим четырем (или как минимум трем) принципам в процессе выполнения.

      Некоторые языки программирования следуют CRUD в том виде, в котором он есть, в то время как лишь некоторые используют адаптированную версию CRUD. К языкам, использующим инфраструктуру CRUD, относятся: Python, PHP, Java и .Net.

      CRUD работает как напоминание для разработчиков о том, что необходимо для того, чтобы приложение чувствовало себя полноценным. Она возникла в начале 80-х годов. В то время его использовали для иллюстрирования жизнеспособности базы данных SQL. Со временем он расширил список областей применения и стал ключевым принципом проектирования для DDS и HTTP.

      Определение функций CRUD

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

      Create

      Эта функция используется для оповещения о введении любых новых изменений в базу данных и обеспечения их реализации. В реляционной базе данных SQL, Create называется INSERT . Этот оператор разрешает конечному пользователю создавать новые строки данных и позволяет ранее сохраненным данным легко взаимодействовать с новой базой данных.

      Допустим, мы добавляем Фрукты в список http://www.example.com/fruits/ . Для того, чтобы создать объект «Манго», мы должны оправить запрос POST на этот URL:

      Этот код создаст еще один объект в списке фруктов с именем «манго», у которого есть свойство (цвет) со значением «желтый». При успешном создании вы получите HTTP-ответ 201 .

      Read

      Что функция поиска делает в обычных случаях, вы можете узнать, почитав о реляционных базах данных. Конечным пользователям разрешено искать различимые значения или данные в таблице данных и находить значения. Можно использовать определённые ключевые слова или фильтровать данные, чтобы получить точную информацию.

      Теперь для того, чтобы прочитать список, в который вы добавили объект в предыдущем примере, воспользуемся GET-запросом.

      Используйте этот код:

      GET http://www.example.com/fruits/

      Если для вашего запроса существует запись, то вы увидите HTTP-ответ 200 . Также вы увидите список фруктов.

      Для того, чтобы увидеть детали, связанные с конкретным объектом Манго, который мы создали, используйте этот код:

      GET http://www.example.com/fruits/3/
      Update

      Функция модификации полезна для изменения уже существующих записей без внесения каких-либо нарушений в существующую базу данных.

      Для полной модификации требуется некоторая модификация в нескольких областях. Эта функция известна как Update как в SQL, так и в Oracle HCM Cloud.

      Для того, чтобы изменить значение объекта, выполним PUT-запрос для URL-адреса конкретного объекта. Вот так:

      PUT http://www.example.com/fruits/3/

      Если возвращается идентификатор состояния 200 , то обновление прошло успешно. Для подтверждения вы можете прочитать этот объект повторно и просмотреть значения для него.

      Delete

      При помощи этой функции пользователи могут удалять определенные записи или данные из определенной базы данных. Вы можете удалять данные, которые больше не нужны или устарели.

      Удаление бывает двух типов: обратимое или необратимое удаление. Необратимое удаление удаляет данные один раз, а обратимое используется для обновления состояния строки данных без ее окончательного удаления.

      Это очень просто. Давайте удалим созданный нами объект.

      DELETE http://www.example.com/fruits/3/

      Теперь при GET-запросе (чтение) вы получите код 404, который говорит о том, что данных по вашему запросу нет.

      CRUD и REST

      Преимущества CRUD

      Есть что-то, что заставляет разработчиков и дизайнеров приложений предпочитать CRUD любому другому подходу. Это «что-то» — это непревзойденная производительность, интегрированная с некоторыми уникальными функциями. Основные преимущества, которыми можно воспользоваться после запуска CRUD, представлены ниже.

      Меньшая вероятность атак путем внедрения SQL-кода

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

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

      Лучшая защита от случайного просмотра

      Пользователи специальных SQL-операторов должны получить разрешение на доступ к таблицам базы данных. После успешного предоставления разрешения конечным пользователям разрешается читать и управлять данными, имеющимися в Excel, Word и любой другой программе. Также возможен обход бизнес-правил приложения.

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

      Полномочия могут защищаться паролем, а поскольку пароли также интегрированы в приложение, то изменить их сложно. Таким образом, можно покончить со случайным просмотром.

      CRUD и SQL

      CRUD vs REST – сравнение

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

      Что общего?

      Приложения REST разрабатываются с сохранением определенного набора ресурсов в смысловом центре. Эти ресурсы, как и ресурсы CRUD, можно легко создавать, читать, модифицировать и удалять. Просто вместо Create, Read, Update и Delete в REST используются ресурсы PUT/POST, GET, PATCH/POST и DELETE.

      В чем разница?

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

      • В части определения REST упоминается как архитектурная система, а CRUD – как функция.
      • REST «крутится» вокруг ресурсов, основанных на компонентах HTTP.
      • CRUD «крутится» вокруг информации, хранящейся в настройках базы данных.
      • CRUD может быть частью REST, но REST не может быть частью CRUD. REST – это независимый подход, который может правильно функционировать и без CRUD.

      Что такое CRUD-тестирование?

      CRUD-тестирование – это оригинальная методология тестирования методом «черного ящика», которая широко используется для подтверждения полезности данного программного обеспечения в режиме реального времени. Это понятие используется для SQL и других ресурсов СУБД, для которых гарантируется точное отображение данных, сквозное обслуживание ACID-свойств и несравнимая целостность данных.

      Обеспечение безопасности в REST и CRUD-операциях

      Аутентификация, авторизация и учет использования ресурсов (или ААА – Authentication, Authorization, Accounting) – это крайне эффективная практика безопасности, которая одинаково хорошо подходят для REST и CRUD. Она включает в себя аутентификацию конечных пользователей, выполнение авторизации перед каждым доступом и привлечение конечных пользователей к ответственности за свои действия или использование данных.

      CRUD — HTTP API

      В программировании часто используется аббревиатура CRUD . Она обозначает четыре базовых операции над информацией:

      • Создание
      • Чтение
      • Обновление
      • Удаление

      CRUD строят вокруг пользователя или какой-то другой сущности. Для этого создают либо интерфейс с формами, либо HTTP API эндпоинты. В этом уроке мы научимся проводить все эти операции на примере сервиса DummyJSON .

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

      Посмотрим на пример данных:

      Метод URL Операция
      GET /users Список пользователей
      GET /users/1 Информация о пользователе
      POST /users/add Добавление пользователя
      PATCH /users/1 Обновление пользователя
      DELETE /users/1 Удаление пользователя

      Как видите, в URL постоянно повторяется 1 — это идентификатор конкретного пользователя. Он будет меняться в зависимости от того, с каким пользователем мы работаем прямо сейчас.

      Кстати, идентификатор необязательно должен быть числом. Здесь все зависит от того, что бэкенд считает идентификатором и как идентификаторы создаются в базе данных. Например, в MongoDB идентификатор состоит из чисел и букв.

      Давайте вернемся к примеру выше и обратим внимание на использование методов HTTP. У методов есть определенный смысл:

      • GET нужен для извлечения данных
      • POST — для создания и отправки форм
      • PATCH — для обновления
      • DELETE — для удаления

      При этом URL часто остается одним и тем же.

      В API важно использовать подходящие методы. Любые HTTP-запросы обрабатываются веб-серверами и промежуточными прокси, которые могут находиться на пути к веб-серверу. И веб-сервер, и прокси знают про особенности HTTP. В зависимости от параметров запроса они могут делать различные оптимизации и кешировать результат.

      Кеширование — это такая техника, которая позволяет веб-серверу или прокси сохранить ответ от сервера и отдавать его при следующих запросах без обращения к самому серверу.

      Кеширование ускоряет доступ к ресурсам и разгружает серверы. Запрос GET можно кешировать для ускорения доступа, потому что GET никогда не меняет данные.

      Методы POST, PATCH и DELETE кешировать нельзя — они должны постоянно приходить на сервер, так как они вносят изменения.

      Добавление пользователя

      Попробуем добавить пользователя. Для этого по документации Dummy JSON нам нужно отправить POST-запрос на эндпоинт https://dummyjson.com/users/add .

      Данные можно отправлять в разных форматах, HTML-формой или JSON-файлом. Чтобы использовать JSON, во время подготовки запроса нужно выполнить два шага:

      1. Указать заголовок Content-Type со значением application/json
      2. Преобразовать данные в JSON

      В итоге запрос будет выглядеть так:

      Есть несколько возможных вариантов ответа от сервера:

      • Код 201 — ресурс успешно создан
      • Код 422 — ошибка валидации
      • Код 406 — некорректные данные или неверный формат

      Подробнее можно прочитать в гайде по HTTP-кодам . Большая часть из них может встречаться с любым HTTP-методом.

      Обновление пользователя

      Для обновления пользователя мы должны отправить PATCH-запрос на эндпоинт https://dummyjson.com/users/ . Обновлять можно любой набор параметров, не обязательно сразу все:

      Если все прошло успешно, то возможны два варианта ответа:

      • Код 200 с какими-то данными — например, JSON с обновленными данными ресурса
      • Код 204 — нет тела ответа

      Удаление пользователя

      Для удаления пользователя мы должны отправить DELETE-запрос на эндпоинт https://dummyjson.com/users/ . Тела запроса в таком случае нет, потому что все понятно из адреса запроса:

      Если все прошло успешно, то возможны два варианта ответа:

      • Код 200 и какие-то данные
      • Код 204 и пустое тело ответа

      Идемпотентность

      Когда мы работаем с API, очень важна идемпотентность запросов. Это свойство указывает, насколько безопасно выполнять HTTP-вызов повторно. Идемпотентный запрос приводит к одному и тому же результату независимо от количества сделанных вызовов.

      Для примера возьмем эндпоинт /users. Он возвращает список пользователей и ничего не меняет на сервере. Каждый новый вызов этого эндпоинта возвращает идентичный список пользователей — значит, это идемпотентный запрос.

      Список пользователей может поменяться, если его меняют где-то в другом месте. Но даже это не поменяет идемпотентность GET-запроса на /users, ведь он сам ничего не меняет.

      А вот POST-запрос — точно не идемпотентный. Каждый вызов /users/add имеет два исхода:

      • Добавляет нового пользователя, хотя и с теми же самыми данными
      • Возвращает ошибку, если на сервере добавлена проверка на уникальность каких-то данных

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

      По стандарту PATCH тоже не идемпотентный, хотя на практике чаще его делают идемпотентным. Но на это уже не могут рассчитывать браузеры или веб-серверы, потому что они не знают про специфику конкретных приложений.

      Открыть доступ

      Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

      • 130 курсов, 2000+ часов теории
      • 1000 практических заданий в браузере
      • 360 000 студентов

      Наши выпускники работают в компаниях:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *