
Отдых является аббревиатурой для репрезентативного государственного перевода . RESTFUL API является архитектурным стилем для интерфейса прикладной программы (API), который использует HTTP -запросы для доступа и изменения данных. Эти данные могут использоваться для получения, размещения и удаления типов данных, что относится к чтению, обновлению, созданию и удалению операций в отношении ресурсов. Для получения более подробной информации
Основными функциями, используемыми в любой архитектуре на основе отдыха:
Ваше приложение должно удовлетворить определенные ограничения или принципы. Давайте рассмотрим подробности об этих принципах.
Есть шесть основных принципов, ниже приведены шесть руководящих принципов отдыха:
Бездействие: запросы, отправленные с клиента на сервер, содержит всю необходимую информацию, которая требуется для полного понимания ее. Это может быть частью URI, параметров строки запросов, тела или даже заголовков. URI используется для однозначного идентификации ресурса, а орган удерживает состояние запрашивающего ресурса. После того, как обработка выполнена сервером, соответствующий ответ отправляется обратно клиенту через заголовки, статус или тело ответа.
Клиент-сервер: у него есть единый интерфейс, который отделяет клиентов от серверов. Разделение проблем помогает в улучшении переносимости пользовательского интерфейса на нескольких платформах, а также повысить масштабируемость компонентов сервера.
Единый интерфейс: чтобы получить однородность на протяжении всего приложения, REST определил четыре ограничения интерфейса, которые являются:
Resource identification
Resource Manipulation using representations
Self-descriptive messages
Hypermedia as the engine of application state
Кэш. Это делается путем маркировки ответа с сервера как кэшируемого или непрерывного либо неявного, либо явно. Если ответ определяется как кэшированный, то клиент -кэш может повторно использовать данные ответа для эквивалентных ответов в будущем. Это также помогает в предотвращении повторного использования устаревших данных.
Слоистая система: многослойная архитектура системы позволяет применению быть более стабильным, ограничивая поведение компонентов. Эта архитектура обеспечивает балансировку нагрузки и обеспечивает общие кэши для продвижения масштабируемости. Слоистая архитектура также помогает повысить безопасность приложения, поскольку компоненты в каждом слое не могут взаимодействовать за пределами следующего непосредственного уровня, в котором они находятся.
Код по требованию: код по требованию является необязательным ограничением и используется меньше всего. Это позволяет загружать и расширять код клиентов или апплеты через интерфейс, который будет использоваться в приложении. По сути, он упрощает клиентов, создавая умное приложение, которое не полагается на собственную структуру кода.
Теперь, когда вы знаете, что такое API REST и что вам нужно для возраста, чтобы обеспечить эффективное применение, давайте погрузимся глубже и увидим процесс создания API REST с использованием всех технологий трендов и FrameOwrks.
Протокол REST и Simple Object Access (SOAP) предлагает различные методы для вызова веб -службы. REST-это архитектурный стиль, в то время как SOAP определяет стандартную спецификацию протокола связи для обмена сообщениями на основе XML. Приложения для отдыха могут использовать SOAP.
Служба RESTFULE не состоит в том, чтобы без сохранения состояния. Реализация, основанная на REST, проста по сравнению с SOAP, но пользователи должны понимать контекст и контент, который передается, так как нет стандартного набора правил для описания интерфейса REST Web Services. Услуги REST полезны для устройств с ограниченным профилем, таких как мобильные устройства, и их легко интегрировать с существующими веб -сайтами.
SOAP требует меньшего количества сантехнического кода, означающего низкоуровневый инфраструктурный код, который соединяет модули основного кода вместе, чем дизайн служб REST. Описание веб -служб Язык описывает общий набор правил для определения сообщений, привязков, операций и расположения Сервиса. SOAP Web Services полезны для асинхронной обработки и вызова.
Это некоторые моменты, которые вы должны учитывать при разработке API REST:
Чрезвычайно большие полезные нагрузки данных ответа замедлят завершение запроса, другие вызовы службы и в результате эффективности ухудшения. Как вы знаете, теперь, когда мы возвращаем все заказы для клиента, а не только их текущий заказ, нам придется иметь дело с некоторой деградацией производительности.
Мы можем использовать GZip Compression , чтобы уменьшить размер полевой нагрузки. Это уменьшает размер загрузки нашего ответа в веб -приложении (стороне клиента), а также увеличивает скорость загрузки или создание какой -либо сущности (заказы). Мы можем использовать Deflate compression на веб -API. Или мы можем обновить заголовок Accept-EncodingRequest в GZIP .
Кэширование является одним из самых простых методов для повышения производительности API. Если у нас есть запросы, которые часто отдают тот же ответ, то кэшированная версия этого ответа помогает избежать дополнительных запросов на сервисные вызовы/базы данных . Вы захотите убедиться, что при использовании кэширования для периодической признания данных в кэше, особенно когда появятся новые обновления данных.
Допустим, наш клиент хочет разместить заказ на автоматическую часть, и наше приложение вызывает некоторые API API Auto Parts, чтобы получить цену части. Поскольку ответ (цена частично) меняется только один раз в неделю (@ 1:00 утра), мы можем кэшировать ответ для остальной части времени до тех пор. Это избавляет нас от нового звонка каждый раз, чтобы вернуть ту же цену. Аналогичный случай вы можете использовать кэш, чтобы избежать дополнительных вызовов или запросов.
Медленная сеть ухудшает производительность даже самого надежного API. Ненадежные сети могут вызвать время простоя, что может привести к нарушению SLA, условий обслуживания, и обещаниям, которые вы, возможно, дали для ваших клиентов. Важно инвестировать в соответствующую сетевую инфраструктуру, чтобы мы могли поддерживать желаемый уровень производительности. Это может быть достигнуто путем использования и приобретения достаточных облачных ресурсов и инфраструктуры (example: in AWS, allocate the proper # of EC2 instances, use a Network Load Balancer) . Кроме того, если у вас большое количество фоновых процессов, запустите их в отдельных потоках, чтобы избежать блокировки запросов. Вы также можете использовать зеркала и сети доставки контента (CDN), такие как CloudFront, чтобы быстрее обслуживать запросы в разных частях земного шара.
У вас может быть ситуация, когда ваш API страдает от атаки DDOS, которая может быть злонамеренной и преднамеренной, или невыделенной, когда инженер звонит API для выполнения в цикле из какого -то местного приложения. Вы можете избежать этого, измеряя транзакции и monitoring the number of how many transactions occur per IP Address, or per SSO/JWT Token (if the customer/calling app is authorized before calling the API) .
Этот метод для ограничения скорости помогает уменьшить чрезмерные запросы, которые замедлили бы API, помогают справиться с случайными вызовами/выполнением, а также активно отслеживать и выявлять возможную вредоносную деятельность.
Это распространенное заблуждение среди инженеров, которые ставят и патч -операции дают одинаковый результат. Они похожи в обновлении ресурсов, но каждый из них выполняет обновления по -разному. Поместите ресурсы обновления операций, отправив обновления на весь ресурс. Операции исправлений применяют частичные обновления только к ресурсам, которые нуждаются в обновлении. Полученные в результате вызовы Inpatch, которые производят меньшие полезные нагрузки, и повышают производительность в масштабе.
Pro-Tip: Even though PATCH calls can limit the request size, you should note that it is not Idempotent.
Meaning, it is possible that a PATCHcan yield different results with a series of multiple calls.
So, you should carefully and deliberately consider your application for using PATCH requests,
and make sure that they are idempotently implemented if needed. If not, use PUT requests.
Это, пожалуй, один из самых важных советов, которые вы прочитаете здесь. Если есть что -то, что вы должны извлечь из этого репо, это должно быть! Нет переговоров по этому поводу.
Наличие журналов, мониторинг и оповещения помощи инженерам диагностировать и устранять проблемы, прежде чем они станут проблемами . Многие API (express/node, java, go) имеют предопределенные конечные точки для оценки таких вещей, как:
`/health`
`/metrics`
Если у вас нет включения журнала, и возникает потенциальная проблема, вы не сможете отслеживать происхождение или где проблема возникает в определенном запросе.
Если у вас нет включенного мониторинга, вы не узнаете с аналитической точки зрения, как часто возникают некоторые проблемы или ошибки. Что затем помешает вам думать о возможных решениях.
И ... если у вас нет включенного предупреждения, вы не будете знать, есть ли проблема, пока клиент (или, что еще хуже, клиенты) не сообщит об этом.
Парень помогает создавать ведра контента из нескольких ответов . Этот вид оптимизации помогает улучшить ответы при сохранении данных, которые передаются/отображаются клиенту. Вы можете стандартизировать, сегментировать и ограничивать ответы, которые помогают уменьшить сложность результатов, и улучшить общий опыт работы с клиентами, предоставляя ответ/результаты только для того, что попросил клиент.
Мы знаем, что API удивительны, и могут быть чрезвычайно мощными в предоставлении бизнесу и клиентам отличный опыт, если он правильно оптимизирован и повышен для производительности. Бизнес -требования и ожидания клиентов всегда развиваются со временем. И как ответственные инженеры, мы решаем, как построить наши API в исполнении, это может помочь нам достичь и превзойти наши цели.
Эти советы являются только вершиной айсберга, и применяются ко всем API в общей обстановке. В зависимости от вашего конкретного API и использования, с какими услугами он взаимодействует, как часто его называют, откуда его вызывается и т. Д. Вам, возможно, придется реализовать эти советы по -разному.
REST API с Laravel - Passport
REST API с PHP - OOPS
REST API с Python - колба
REST API с Python - Django - Restframework
REST API с GO - MUX
REST API с GO - джин
REST API с Nodejs - Express - Basic
REST API с nodejs - Express- JWT - Searchellze - Advance
Очень легко создать API REST за пару минут, вы можете выбрать любую из вышеперечисленных кодовых базой в соответствии с вашим языковым и структурным предпочтением и следовать инструкциям по созданию API REST.
Счастливое кодирование?
LinkedIn: https://www.linkedin.com/in/the-startup-cto/
Среда: https://apige.medium.com/
Twitter: https://twitter.com/htngapi