Swagger позволяет нам задокументировать REST API и поделиться с пользователями API. Это также позволяет нам создавать заглушки REST для быстрого прототипирования и имитации.

Популярность веб-службы REST постоянно растет, и разработка приложений на основе REST API является стандартом в корпоративной среде. API определяет договор между издателем API и его потребителями. Этот контракт включает несколько аспектов API; включая конечные точки, модель запрос-ответ, объекты домена и так далее. За последние пару лет Swagger стал стандартом для документирования REST API. Swagger фиксирует определения API в формате JSON или YAML в соответствии со спецификацией OpenAPI. Документом Swagger можно поделиться с потребителями API для быстрого создания прототипов и имитации.

Swagger также предоставляет отличный инструмент для генерации кода для анализа и имитации конечных точек, определенных в документе спецификации Swagger API. Эта утилита позволяет потребителям API генерировать REST-клиент на нескольких языках. В этой статье мы поговорим о том, как сгенерировать REST-клиент Node JS из заданного документа спецификации Swagger API.

Создание документа спецификации Swagger

В этом разделе мы будем использовать приложение загрузки Spring для создания документа спецификации Swagger, который состоит из спецификации REST API. Затем этот документ можно использовать для совместного использования с потребителями API, чтобы можно было создать клиент Node JS с помощью утилиты создания кода Swagger.

Чтобы создать спецификацию Swagger, мы создали образец проекта загрузки Spring. Его можно скачать по ссылке этот Github. Этот проект посвящен службе управления книгами и предоставляет следующие конечные точки REST:

GET v1 / books /: список всех книг
POST v1 / books /: создание новой книги
GET v1 / books / { book_id}: получить книжный ресурс.
DELETE v1 / books / {book_id}: удалить книгу

Загрузите этот проект и настройте в своей любимой IDE. Чтобы создать документ swagger, мы обновим файл pom.xml зависимостями maven springfox-swagger2 и springfox-swagger-ui, как показано ниже:

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.9.2</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.9.2</version>
</dependency>

После этого мы добавим приведенную ниже конфигурацию Swagger. Эта конфигурация позволяет Swagger обнаруживать конечные точки REST, а также добавлять некоторые метаданные о владельце API (имя API, адрес электронной почты, веб-сайт и т. Д.)

Запустите приложение и перейдите по адресу http: // localhost: 8080 / v2 / api-docs. Это показывает документ спецификации Swagger OpenAPI. Сохраните этот файл JSON как swagger-book-api.json. Кроме того, мы также можем просмотреть информацию о конечной точке REST по адресу http: // localhost: 8080 / swagger-ui.html.

Создание клиента Node Js из спецификации Swagger

В предыдущем разделе мы разработали и реализовали REST API для загрузки Spring с помощью Swagger. Затем мы создали документ спецификации, состоящий из информации о конечной точке и деталей домена проекта. В этом разделе мы будем использовать инструмент создания кода Swagger, чтобы сгенерировать заглушку NodeJs для имитации этих конечных точек REST.

Загрузите jar-файл swagger-codegen-cli из maven central и выполните следующую команду, чтобы сгенерировать заглушку node js.

java -jar swagger-codegen-cli.jar generate -i C:\Somnath\Writing\Medium\docs\swagger-book-api.json -l nodejs-server -o C:\Somnath\Dev\Programming\JavaScript\NodeJs\swagger-client-medium

Приведенная выше команда создает приложение-заглушку Node js на основе спецификации. Перейдите к service \ BookConrollerService и обновите getBookUsingGET, как показано ниже:

Запустите приложение узла с помощью npm start и перейдите по следующему URL-адресу:

Http: // localhost: 8080 / v1 / books / 1

{
    "bookId": "123", 
    "bookTitle": "Spring For All",
    "bookAuthor": "Code Fountain",
    "bookPublisher": "Medium"
}

Заключение

В этой статье мы обсудили, как мы можем задокументировать REST API с помощью Swagger. Мы также обсудили, как сгенерировать заглушки REST из документа спецификации swagger и имитировать конечные точки для быстрого прототипа и тестирования. Полный исходный код этого проекта можно найти в этом репозитории Github.