ћерион Ќетворкс

7 минут

ѕостроение модели 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:

{
  Уfruit": {
    "name": УMangoФ,
    "color": УYellowФ
  }
}

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

Read

„то функци€ поиска делает в обычных случа€х, вы можете узнать, почитав о рел€ционных базах данных.  онечным пользовател€м разрешено искать различимые значени€ или данные в таблице данных и находить значени€. ћожно использовать определЄнные ключевые слова или фильтровать данные, чтобы получить точную информацию.

ѕример:

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

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

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

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

{
  "fruits": [
    {
      "id": 1,
      "name": УAppleФ,
      "color": УRedФ
    },
    {
      "id": 2,
      "name": УGrapesФ,
      "color": УGreenФ
    },
    ...
    {
      "id": 3,
      "name": УMangoФ,
      "color": УYellowФ
    }
  ]
}

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

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

Update

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

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

ѕример:

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

PUT http://www.example.com/fruits/3/
{
  "fruits": {
    "name": УRipe WatermelonФ,
    "color": УBlood RedФ
  }
}	

≈сли возвращаетс€ идентификатор состо€ни€ 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. ќна включает в себ€ аутентификацию конечных пользователей, выполнение авторизации перед каждым доступом и привлечение конечных пользователей к ответственности за свои действи€ или использование данных.


—кидки 50% в Merion Academy

¬ыбрать курс