Найти тему

Документирование API. Contract first vs Code first

Оглавление

Перед вами карта компетенций системного аналитика и сегодня мы поговорим про подходы code first и contract first.

Карта компетенций системного аналитика
Карта компетенций системного аналитика

Contract first

Contract first
Contract first

Когда мы разрабатываем API (REST, SOAP, что-то еще – не важно), необходимо так же разработать документацию для пользователей этого API. В документации описано, какие методы есть у API, на какие адреса нужно отправлять запросы, как их формировать и как понимать ответы на такие запросы. При подходе Contract first сначала разрабатывается такая документация (контракт) и уже потом разрабатывается само API.

Code first

Code first
Code first

Напротив, при подходе Code first сначала разрабатывается код, а из него уже генерируется документация. Как мы обсуждали в предыдущей статье про Open API и Swagger, из кода можно сгенерировать спецификацию, а из этой спецификации автоматически реализовать простенький UI с документацией и возможностью протестировать API.

Contract first vs Code first

Contract first vs Code first
Contract first vs Code first

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

Заключение

В заключении повторим основные моменты:

  • При использовании подхода contract first, сначала разрабатывается документация (контракт) и только потом код.
  • При подходе code first сначала разрабатывается код, а документация генерируется из него автоматически.
  • При этом подход contract first более универсален и допускает параллельную разработку клиентской и сервисной части, в то время как подход code first делает разработку быстрее, а документация при таком подходе поддерживается актуальной автоматически.