[#] Подходы к проектированию RESTful API
habrabot(difrex,1) — All
2016-02-17 19:00:04


![][1] Автор: Вячеслав Михайлов, Solutions Architect. В этой статье я поделюсь опытом проектирования RESTful API — на конкретных примерах покажу, как делать хотя бы простые сервисы красиво. Также мы поговорим, что такое API и зачем он нужен, поговорим об основах REST — обсудим, на чем его можно реализовывать; коснемся основных веб-практик, которые зависят и не зависят от этой технологии. Также узнаем, как составлять хорошую документацию, затрачивая на это минимум усилий, и посмотрим, какие существуют способы нумерации версий для RESTful API.

##### **Часть 1. Теория**

Итак, как мы все знаем, API — application programming interface (интерфейс программирования приложений), набор правил и механизмов, с помощью которых одно приложение или компонент взаимодействует с другими **Почему хороший API — это важно? **

* **Простота использования и поддержки**. Хороший API просто использовать и поддерживать.
* **Хорошая конверсия в среде разработчиков**. Если всем нравится ваш API, к вам приходят новые клиенты и пользователи.
* **Выше популярность вашего сервиса**. Чем больше пользователей API, тем выше популярность вашего сервиса.
* **Лучше изоляция компонентов**. Чем лучше структура API, тем лучше изоляция компонентов.
* **Хорошее впечатление о продукте**. API — это как бы UI разработчиков; это то, на что разработчики обращают внимание в первую очередь при встрече с продуктом. Если API кривой, вы как технический эксперт не будете рекомендовать компаниям использовать такой продукт, приобретая что-то стороннее.

**Теперь посмотрим, какие бывают виды API.** Виды API по способу реализации: ●     Web service APIs ○     XML-RPC and JSON-RPC ○     SOAP ○     REST ●     WebSockets APIs ●     Library-based APIs ○     Java Script ●     Class-based APIs ○     C# API ○     Java   Виды API по категориям применения: ●     OS function and routines ○     Access to file system ○     Access to user interface ●     Object remoting APIs ○     CORBA ○     .Net remoting ●     Hardware APIs ○     Video acceleration (OpenCL…) ○     Hard disk drives ○     PCI bus ○     … [Читать дальше →][2]

[1]: https://habrastorage.org/files/59e/d3d/b1c/59ed3db1cdf64a0b829b83564f72e1ea.png
[2]: https://habrahabr.ru/post/277419/#habracut