![][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