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