Как спроектировать и задокументировать веб-API без REST? - PullRequest
0 голосов
/ 16 января 2019

Мне нужно разработать веб-API, который не является REST.Это будет работать так:

Сторонний веб-сайт (позже названный «потребитель») должен сделать вызов POST с полезной нагрузкой JSON для моего сервиса.Вызов должен быть выполнен веб-браузером.Моя служба обработает запрос и покажет некоторый пользовательский интерфейс, возможно, проведет конечного пользователя через ряд форм / страниц и соберет входные данные.В конце мой сервис вернет результат и управление «потребителю», сделав POST-вызов для URL обратного вызова, указанного «потребителем».

Используемая технология будет Spring Boot.Мои вопросы:

  • есть ли официальное название для этого вида API / интеграции?
  • есть какой-нибудь умный (автоматизированный) способ документировать такой API?Особенно полезная нагрузка JSON, используемая в качестве ввода и вывода.Я пытался использовать Swagger, но, похоже, он не очень подходит для этого варианта использования.JSON схема возможно?Я не использовал его раньше, на первый взгляд он выглядит немного заброшенным и больше ориентирован на проверку.

Ответы [ 2 ]

0 голосов
/ 16 января 2019

Моя служба обработает запрос и отобразит некоторый пользовательский интерфейс, возможно, проведет конечного пользователя через ряд форм / страниц и соберет входные данные.

Если я правильно понимаю, выответ на запрос POST с помощью HTML («показать некоторый пользовательский интерфейс», «формы / страницы»).Я бы вообще не называл это API, и я бы даже не использовал слово «сервис».Я бы сказал, что вы разрабатываете просто веб-приложение.

Чтобы превратить его в реальный сервис, вам нужно разделить его так, чтобы части пользовательского интерфейса обрабатывались в другом месте, и чтобы ваш сервис возвращался только данные .Поскольку вы принимаете JSON в полезной нагрузке запроса, наиболее естественным форматом полезной нагрузки ответа также является JSON.

Если вашей службе абсолютно необходимо перенаправить пользователя на веб-страницу, где они могут предоставить дополнительную информацию.информация для продолжения любого процесса, который запускает первоначальный запрос POST, затем верните URL на эту страницу.Пусть URL-адрес включает все параметры запроса, необходимые для пользовательского интерфейса веб-приложения для создания форм.

(Я предполагаю, что это будет динамический характер, потому что в противном случае вы просто указали бы этот предварительный запрос и получили бы все данные в полезной нагрузке запроса исходного POST.)

Anдаже более чистый подход заключается в том, чтобы позволить потребителю справиться со всеми проблемами пользовательского интерфейса, и только ваша служба сообщит потребителю, какую дополнительную информацию она может / должна предоставить при последующих вызовах.Это дало бы потребителю гораздо большую свободу, поскольку он позволяет им использовать ваш API из любого типа приложения (командной строки, мобильного приложения, Интернета и т. Д.).

0 голосов
/ 16 января 2019

Для вашего первого вопроса, я полагаю, вы можете назвать его «HTTP API», поскольку вы используете HTTP-протокол, не обязательно соблюдая ограничения REST. Я основываю это на следующей ссылке .

Что касается вашей документации, вы можете использовать что-то вроде Slate , генератор документации API на основе уценки.

...