Принципы единого интерфейса (известные также как принципы проектирования RESTfull API, хотя применимы и к другим распределенным системам):
- Идентификация ресурсов: Каждая часть информации, которую можно адресовать, должна иметь уникальный идентификатор. Клиент взаимодействует с ресурсами, используя эти идентификаторы.
- Манипулирование ресурсами через представления: Клиент получает представление ресурса (например, в формате JSON или XML) и может изменять состояние ресурса, отправляя модифицированное представление обратно серверу.
- Сообщения с самоописанием: Каждое сообщение между клиентом и сервером должно содержать достаточно информации для его полной интерпретации. Клиент не должен полагаться на стороннюю информацию или состояние сессии на сервере.
- Гипермедиа как движок состояния приложения (HATEOAS - Hypermedia As The Engine Of Application State): Сервер должен предоставлять гиперссылки (связи) в ответах, которые указывают на следующие возможные действия или связанные ресурсы. Клиент перемещается по приложению, следуя этим ссылкам, а не полагаясь на заранее фиксированные URL или логику.
- Архитектура "клиент-сервер": Четкое разделение обязанностей между клиентом (отвечает за пользовательский интерфейс и инициирование запросов) и сервером (отвечает за хранение данных и обработку запросов). Такое разделение улучшает масштабируемость и переносимость клиентской части.
- Отсутствие состояния (Stateless): Каждый запрос от клиента к серверу должен содержать всю необходимую информацию для его понимания и обработки сервером. Сервер не хранит информацию о состоянии сессии клиента между запросами. Это повышает масштабируемость сервера и устойчивость к сбоям.
Соблюдение этих принципов способствует созданию масштабируемых, гибких и легко поддерживаемых распределенных систем.