Как стать автором
Поиск
Написать публикацию
Обновить
59.33

Проектирование API *

О создании API

Сначала показывать
Порог рейтинга
Уровень сложности

REST API за пару минут с Lionframe

Время на прочтение2 мин
Количество просмотров18K
Генераторы кода упрощают жизнь рядового разработчика, во всяком случае призваны это делать, избавляя его от скучного написания однотипного кода. Один из таких генераторов команда Sylius'a представила как подарок для коммьюнити к Рождеству.
Читать дальше →

Проектирование RESTful API с помощью Python и Flask

Время на прочтение15 мин
Количество просмотров295K
В последние годы REST (REpresentational State Transfer) стала стандартной архитектурой при дизайне веб-сервисов и веб-API.

В этой статье я покажу вам как просто создавать RESTful веб-сервисы используя Python и микрофреймворк Flask.

Что такое REST?


Характеристика системы REST определяется шестью правилами дизайна:

  • Клиент-Сервер: Должно быть разделение между сервером, который предлагает сервис и клиентом, который использует ее.
  • Stateless: Каждый запрос от клиента должен содержать всю информацию, необходимую серверу для выполнения запроса. Другими словами, сервер не обязан сохранять информацию о состоянии клиента.
  • Кэширование: В каждом запросе клиента должно явно содержаться указание о возможности кэширования ответа и получения ответа из существующего кэша.
  • Уровневая система: Клиент может взаимодействовать не напрямую с сервером, а с произвольным количеством промежуточных узлов. При этом клиент может не знать о существовании промежуточных узлов, за исключением случаев передачи конфиденциальной информации.
  • Унификация: Унифицированный программный интерфейс сервера.
  • Код по запросу: Сервера могут поставлять исполняемый код или скрипты для выполнения их на стороне клиентов.

Читать дальше →

Финальное мероприятие WGDC глазами организатора

Время на прочтение5 мин
Количество просмотров5.8K
image

Конкурс WGDC финишировал теплой неформальной встречей сторонних разработчиков в Минске. Ниже — краткий дневник одного из организаторов, фотографии и много видео.
Читать дальше →

Пишем прошивку для Arduino на С++ с REST управлением через последовательный порт и экранчиком

Время на прочтение6 мин
Количество просмотров25K
image

Это второй пост про Wi-Fi роботанк. В нем будет написано как не надо делать прошивки, если вы суровый программист микроконтроллеров и как можно сделать, если нужна максимальная наглядность и возможность рулить прошивкой почти как веб-приложением прямо с терминала.

То есть, например, отправив в последовательный порт что-то типа
/battery?act=status
получим в ответ что-то типа
{ "status": "OK", "minValue": 600, "maxValue": 900, "value":750, "percent": 50 }

Для тех, кому лень читать статью, сразу ссылка на github и Яндекс-диск, у кого гитхаб залочен (спасибо MaximChistov).

Читать дальше →

eBay API: шаг второй

Время на прочтение8 мин
Количество просмотров11K
Привет, хабравчане.

Публикация навеяна этой статьей — «eBay API: Первые шаги» и теоретически может стать её продолжением. Она пригодится тем, кто пытался начать работать с eBay API, не нашел где спросить, что делать и плюнул на это занятие. Или спросил, не дождался ответа и в итоге все равно плюнул.

На истину ни в какой инстанции не претендую и с радостью приму советы по преодолению багов, которые преодолеть так и не удалось.



Прежде всего, хочется оставить небольшую ремарку: начать работать с eBay API быстро — не получится. Катастрофическое количество недосказанностей и нестыковок в документации, недоработки и баги в самом механизме API, неявности и неоднозначности использования комбинаций условий запросов заставляют тестировать каждый шаг по отдельности. И тестировать неоднократно: то, что вчера прекрасно работало, сегодня будет возвращать ошибку, а завтра продолжит работать как ни в чем не бывало.

Впрочем, дабы не возводить напраслину на уважаемую компанию, давайте забудем про предыдущий абзац и все спишем на то, что я просто туп, глуп и недоразвит. И что у настоящего программиста все получится гораздо быстрее и правильнее.
Читать дальше →

Интерактивное голосовое редактирование текста с помощью новых речевых технологий от Яндекса

Время на прочтение11 мин
Количество просмотров97K
Сегодня наше приложение Диктовка для интерактивного написания и редактирования текста голосом появилось в AppStore и Google Play. Его главная задача — продемонстрировать часть новых возможностей комплекса речевых технологий Яндекса. Именно о том, чем интересны и уникальны наши технологии распознавания и синтеза речи, я хочу рассказать в этом посте.



Пара слов, чтобы вы понимали, о чём пойдёт речь. Яндекс уже давно предоставляет бесплатное мобильное API, которое можно использовать, например, для распознавания адресов и голосовых запросов к поиску. За этот год мы смогли довести его качество почти до того же уровня, на котором такие запросы и реплики понимают сами люди. И теперь мы делаем следующий шаг — модель для распознавания свободной речи на любую тему.

Кроме этого, наш синтез речи поддерживает эмоции в голосе. И, насколько нам известно, это пока первый коммерчески доступный синтез речи с такой возможностью.

Обо всём этом, а также о некоторых других возможностях SpeechKit: об активации голосом, автоматической расстановке пунктуационных знаков и распознавании смысловых объектов в тексте — читайте ниже.
Читать дальше →

Пошаговый обзор: единое MultiCAD.NET приложение в nanoCAD, AutoCAD, ZWCAD

Время на прочтение3 мин
Количество просмотров13K
image
Одной из важных особенностей приложений, написанных на MultiCAD.NET API, является их кросс-САПР-платформенность. Проще говоря, приложения, написанные однажды, могут работать в любой из поддерживаемых САПР без перекомпиляции.

MultiCAD.NET является «родным» API для nanoCAD, приложения могут быть загружены с помощью стандартных команд APPLOAD или NETLOAD. В AutoCAD или ZWCAD необходимо предварительно загрузить MultiCAD Object Enabler, затем MultiCAD.NET приложения загружаются командой NETLOAD.

Под катом пошаговое руководство, в котором мы продемонстрируем процесс загрузки MultiCAD.NET приложения в nanoCAD, AutoCAD и ZWCAD, создадим с его помощью чертеж и отредактируем его во всех трех системах.
Читать дальше →

JMeter как относительно удобное и практичное средство для тестирования API

Время на прочтение4 мин
Количество просмотров40K
В статье пойдет речь о тестировании в сжатые сроки с использованием инструмента JMeter, а также о том, как успешно завершить работу при вынужденной замене специалистов на проекте.

image

Как тестировщик, я люблю, когда всё по порядку, но жизнь переполнена грязными хаками. Я люблю автоматизировать, подвязав Selenium к Python, но когда встречаюсь с проблемой ограниченности ресурсов, бросаюсь за тот инструмент, который позволяет сделать «всё то же самое, но быстрее». В этом посте я расскажу, что JMeter — прекрасный инструмент как для нагрузочного, так и для функционального тестирования.
Читать дальше →

SpeechMarkup API — превращаем речь в данные

Время на прочтение8 мин
Количество просмотров18K

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

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

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

Читать дальше →

DaData.ru вычисляет координаты, а парсер адресов виляет хвостом

Время на прочтение2 мин
Количество просмотров21K
DaData.ru — сервис автоматической проверки и исправления контактных данных (ФИО, адресов, телефонов, email).

На дворе ноябрь, а на DaData.ru — новые возможности:
  • определение геокоординат,
  • SMS в дневное время,
  • новый адресный алгоритм,
  • оптимизация под смартфоны,
  • статистика в личном кабинете, 
  • модуль для iOS.


Хочу узнать больше

В Rust 1.0 исключений не будет

Время на прочтение2 мин
Количество просмотров19K
Rust LogoСегодня Аарон Тюрон — разработчик, недавно присоединившийся к разработке Rust в Mozilla — объявил об отсрочке реализации какого-либо механизма исключений, кроме уже существующего макроса try! и типа Result, до неопределённого момента после первого релиза языка программирования Rust.

Это означает, что в Rust 1.0 будут отсутствовать исключения первого класса — то есть, полностью интегрированные с другими фичами языка.

Для обработки ошибок в данной момент в Rust существует тип Result { Ok(value), Err(why) } и макрос try!. Тип Result представляет из себя перечисление (enum), похожее на Option { Some(value), None } и связанное с ним по смыслу. Вариант None типа Option говорит об отстутствии значения, а вариант Err(why) типа Result уточняет, почему значение отсутствует.

Rust предлагает возвращать тип Result из функций, чтобы передавать значение возврата или причину, по которой значение вернуть не удалось. Макрос try! в свою очередь позволяет автоматически возвращать Err(why) из текущей функции, если вызов другой функции не удался (применяется к объекту типа Result).
Читать дальше →

Отслеживаем время отклика NFS сервера с помощю tshark и lua

Время на прочтение2 мин
Количество просмотров8.1K
На днях встал перед задачей, как определить, сколько времени тратит NFS сервер на запрос.
Оказалось, что это не так уж и просто посмотреть. Но на помощь пришёл любимый молоток инструмент — wireshark. Для wireshak можно написать своё расширение на LUA.

О, и мне надо!

Использование Accept Header для версионирования API

Время на прочтение4 мин
Количество просмотров18K
Я исследовал различные варианты дя версионирования REST API. Большинство источников, которые я нашел, говорят практически одно и тоже. Для версионирования любого ресурса в интернете вы не должны изменять URL-адрес. Веб не версионный, и изменение URLа говорит клиенту, что есть больше чем 1 ресурс. Но на самом-то деле не существует нескольких ресурсов, это просто разные представления одного и того же. Конечно, бывают случаи, когда необходимо изменить URL, например, когда измененяется функциональность. В данном конкретном случае причиной изменения служит тот факт, что это больше не один и тот же ресурс.

Но с другой стороны, и, возможно, даже более важной, вы всегда должны стараться убедиться, что изменения будут обратно совместимы. Нужно очень хорошо проектировать архитектуру, чтобы использующие ваше API клиенты не меняли свой код. Хорошо продуманное API может спасти вас от большой, очень большой головной боли.
Читать дальше →

Ближайшие события

Эквалайзер на JavaScript

Время на прочтение5 мин
Количество просмотров58K
На хабре уже было несколько статей по Web Audio API: создание визуализатора, вокодера и пианино в 30 24 строки. Поиск же по всея интернетам по запросу эквалайзер упорно выдавал туториалы по созданию спектрограмм. (Если заголовок этой статьи сбил вас с толку или вы таки купились на картинку:) и ожидали именно визуализации аудио — вам сюда или вот сюда). Но именно просто эквалайзера я так и не встретил (хотя уверен, что где-то он таки есть). Возможно, это настолько простая задача, что об этом и писать не стоит. Но, в таком случае, почему бы не сделать её ещё проще?


Читать дальше →

Настройка среды nanoCAD для опытных пользователей

Время на прочтение9 мин
Количество просмотров23K
Рано или поздно у опытного пользователя появляется необходимость расширить штатный функционал САПР своими скриптами и командами, автоматизирующими каждодневную рутину – мы регулярно получаем запросы на тему «как создать свое меню?», «как зарегистрировать свою команду?», «как прописать скрипт в среде nanoCAD?». В этой статье мы решили объединить типовые вопросы и подробно продемонстрировать на несложном примере как пользователь может настроить платформу nanoCAD под себя и сделать ее чуть более функциональной.



В качестве примера возьмем задачку по организации библиотеки .dwg-файлов — у каждого пользователя за время работы накапливается достаточно материалов, которые в последующей работе используются как типовые решения: элементы из старых чертежей, базы блоков и т.д. Мы рассмотрим один из возможных вариантов организации своей библиотеки блоков в среде nanoCAD, и параллельно покажем как зарегистрировать произвольную скрипт-функцию в меню и командной строке. По аналогии вы сможете написать более сложные скрипты и автоматизировать работу по другим направлениям (например, по расчетам, по графическим построениям, по связи с базой данных и т.п.)…
Читать дальше →

Authomatic: python библиотека для аутентификации и авторизации

Время на прочтение6 мин
Количество просмотров42K
imageПрактически любое веб-приложение предоставляет возможность авторизации пользователя с использованием учетной записи пользователя, в каком либо из известных социальных сервисов.

Магия авторизации происходит строго по протоколу OAuth 1.0а и OAuth 2.0 и значительно упрощает жизнь и владельцу веб-приложения и самому пользователю.

Остается сущая мелочь, реализовать нужный протокол применительно к конкретному веб-приложению. Регистрация и вход в веб сервис TheOnlyPage с использованием учетных записей Facebook, Google, LinkedIn и Microsoft Live работают благодаря python библиотеке Authomatic.

Согласно документации Authomatic обладает следующими замечательными особенностями:
Читать дальше →

Свежий взгляд на Rust

Время на прочтение6 мин
Количество просмотров29K
Я программирую на Rust уже достаточно давно, но на самом деле это не имеет большого значения. Rust настолько динамичен, что стоит отвлечься на пару месяцев, и придётся писать уже на фактически другом языке. Однако одна вещь остаётся неизменной: вектор развития. С каждым обновлением, каждой модификацией язык становится всё лучше и лучше.

Изменениям всё еще не видно конца, но даже сейчас язык уже кажется более стабильным, чем несколько месяцев назад, и начинают появляться некоторые устойчивые шаблоны проектирования API. Я подумал, что настало время исследовать всё это поглубже и решил переписать мою библиотеку для redis.
Читать дальше →

Автоматизация работы в nanoCAD с помощью Visual Basic for Applications

Время на прочтение6 мин
Количество просмотров23K
В статье рассмотрен один из вариантов автоматизации работы проектировщиков в САПР nanoCAD, позволяющий в значительной степени использовать параметризацию построений и сокращать сроки выполнения различных задач.



Многие проектировщики используют MS Excel для выполнения математических вычислений в табличной форме. Однако, функционал программы этим не ограничивается. С помощью встроенного в продукты Microsoft Office языка программирования Visual Basic for Applications (VBA) можно взаимодействовать с объектной моделью nanoCAD (и другими продуктами на её платформе). В данной статье мы на простом и универсальном примере продемонстрируем такую возможность — создадим и настроим слои, начертим прямоугольник, проставим к нему размеры и добавим текст, содержащий значение площади фигуры.
Читать дальше →

Самое массовое заблуждение вокруг REST-архитектуры

Время на прочтение2 мин
Количество просмотров14K
Столкнувшись на одном крупном ресурсе для разработчиков с неправильной реализацией REST-архитектуры, я, вслед за компанией Intel, развенчивающей мифы о законе Мура, хочу обратить внимание, на самую частую ошибку при реализации RESTful приложений, нарушающую целостность сети. При чем грешат практически все разработчики, веб-фреймворки и даже очень популярные ресурсы (например GitHub), но...
обо всем по порядку

Как правильно разрабатывать API с поддержкой обратной совместимости. Семинар в Яндексе

Время на прочтение7 мин
Количество просмотров36K
Привет! Меня зовут Сергей Константинов, в Яндексе я руковожу разработкой API Карт. Недавно я поделился опытом поддержки обратной совместимости со своими коллегами. Мой доклад состоял из двух неравных частей. Первая, большая, посвящена тому, как правильно разрабатывать API, чтобы потом не было мучительно больно. Вторая же про то, что делать, если вам нужно что-то рефакторить и не сломать по дороге обратную совместимость.



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

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

Вклад авторов