Аннотация: В разработке проекта часто ожидается, что он будет отделен от передней и задней части, то есть разработчикам задней части часто необходимо вывести большое количество сервисных интерфейсов. Будь то Java или PHP и другие языки, поставщику интерфейса часто необходимо потратить определенное количество усилий для написания интерфейсных документов, таких как адрес интерфейса A, ситуация параметров, которая необходимо передавать, формат данных JSON и описание каждого поля. Конечно, он также должен учитывать заголовки HTTP -запроса, запрос контента и другую информацию. По мере того, как проект быстро развивается и итерации быстро, интерфейсы, выводимые по бэкэнд, часто сталкиваются с такими проблемами, как модификация и ремонт, что также означает, что интерфейсные документы также должны быть соответствующим образом скорректированы. Техническое обслуживание и читаемость интерфейсных документов значительно сокращены.
Поскольку интерфейсный документ требует обслуживания энергии и соответствующего общения лицом к лицу, почему мы не думаем о решении? Во -первых: вам не нужно писать интерфейсные документы; Во-вторых: когда передний и задний и задний ход проблемы с интерфейсом общаются, может ли задняя часть предоставить URL? Перечислите все сервисные интерфейсы, которые могут быть вызваны в этом URL, и перечислите параметры и описание возвращаемого значения в каждом интерфейсе службы. ТРЕТЬЯ: если интерфейс заднего дня может имитировать вызовы, все проблемы будут решены. В этой статье мы сосредоточимся на объяснении интегрированной структуры Swagger2 в Sringboot.
1.1. Добавить Swagger2 -зависимость
Добавьте следующие зависимости в файл pom.xml проекта.
<depervice> <groupid> io.springfox </groupid> <artifactid> springfox-swagge2 </artifactid> <sersive> 2.7.0 </version> </dependency> <dependency> <groupid> io.springfox </GroupD> <artifactid> springfox-swager-uii </artifactid> </Ground> </artifactid> springfox-swager-ui </artifactid> </GroupD> </artifactid> springfox-swager-ui
Во -первых, нам нужно создать класс запуска, код заключается в следующем:
@SpringBootApplicationPublic Class Application {public static void main (String [] args) {SpringApplication.Run (Application.Class, Args); }}Затем создайте новый класс конфигурации для Swagger2 в том же каталоге уровня вышеуказанного класса следующим образом:
@Configuration @entableswger2public class swagger2 {@bean public docket createrestapi () {return new docket (documationtype.swagger_2) .apiinfo (apiinfo ()) .select () .Apis (QuiestHandLerselectors.basepackage ("com.shareniu.web"). .строить(); } private apiinfo apiinfo () {return new apiinfobuilder () .title («Следуйте по обмену NIU, чтобы выучить курсы анализа исходного кода Springboot»). .contact ("niu") .lisense ("Copyright 2017-2018 Share niu") .version ("1.0") .build (); }}@Configuration сформулировал, что пружина должна загружать этот класс, а @EnablesWager2 аннотация должна включить функцию Swagger.
Apiinfo в вышесказанном в конечном итоге будет отображаться на передней части. Мы используем сканирующий пакет для настройки конфигурации, то есть requestHandlerselectors.basepackage. Контроллеры в этом пакете и подпакете в конечном итоге генерируют документы API. (За исключением запросов, указанных @Apiignore Annotation).
1.2. Добавлены инструкции по документации
После приведенного выше объявления класса мы можем на самом деле вызвать его напрямую, но для того, чтобы увеличить читаемость документа, нам все равно нужно добавить некоторые инструкции в интерфейс. Давайте сначала напишем контроллер следующим образом:
@Restcontroller@requestmapping (value = "/users") public class usercontroller {static map <long, user> users = collections.synchronizedmap (new hashmap <long, user> ()); static {user user = new user (); user.setage (18); user.setid (1L); user.setname ("aa"); users.put (1L, пользователь); } @Apioperation (value = "Получить все пользовательские списки", notes = "") @Requestmaping (value = {""}, method = requestMethod.get) public list <user> getUserList () {list <user> r = new ArrayList <user> (users.values ()); возврат R; } @Apioperation (value = "Создать нового пользователя", notes = "Создать пользователя из объекта пользователя") @apiimplicitparam (name = "user", value = "Пользовательский пользователь Пользователь объекта", обязательный = true, dataType = "user") @Requestmapping (value = "", methodsemethod.post) postUser (@Requestbody (value = ", methodsemethod.post) postUser (@Requestbody user use user). пользователь); вернуть "успех"; } @Apioperation (value = "GET пользователя", notes = "Получить данные пользователя на основе идентификатора URL") @ApiimplicitAparam (name = "id", value = "идентификатор пользователя", обязательный = true, dataType = "long") @requestmapping (value = "/{id}", метод = requestmethod.get) public uerfempation (@patable long lete) users.get (id); } @Apioperation (value = "Обновление данных пользователя", notes = "указать объект обновления в соответствии с идентификатором URL") @ApiimplicitAparams ({@apiimpliciteParam (name = "id", value = "user id", обязательный = true, datatype = "long"), @apiimplicitparam (name = "user value =" uerfed entic }) @Requestmapping (value = "/{id}", method = requestMethod.put) public String putuser (@pathvariable Long Id, @Requestbody пользователь пользователь) {user u = users.get (id); U.SetName (user.getName ()); u.setage (user.getage ()); users.put (id, u); вернуть "успех"; } @Apioperation (value = "удалить существующих пользователей", notes = "Укажите объект Delete в соответствии с идентификатором URL") @apiimplicitparam (name = "id", value = "идентификатор пользователя", обязательный = true, dataType = "long") @Requestmapping (value = "/{id}", method = "deletelete string string string string string string string string string string letlete) @preteterail {users.remove (id); вернуть "успех"; }} @Apioperation: используется для описания функции этого интерфейса. Эта аннотация может объяснить обязанности интерфейса, информацию о возврате, метод запроса метода («Get», «Head», «post», «put», «Delete», «Параметры» и «Патч»), протокол (HTTP, HTTPS, WS, WSS) и код статуса HTTP.
@Apiimplicitparam: используется для добавления описаний к параметрам. Вы можете установить имя параметра, будь то необходимый элемент, информация о описании параметра, будь то только для чтения и т. Д.
После того, как приведенный выше код отправлен, запустите Springboot и посетите http://127.0.0.1:8080/swagger-ui.html, как показано на рисунке ниже:
Приведенная выше картина разделена на две части. Верхняя часть настроена через класс Swagger2, а нижняя часть - это интерфейсный документ в классе UserController.
Здесь мы используем /пользователь в качестве примера для иллюстрации:
Нажмите /пользователь, как показано на следующем рисунке:
Желтое пятно выше показывает данные образца, возвращаемые этим интерфейсом. То есть структура данных пользователя. Тип контента ответа: информация заголовка, возвращаемая интерфейсом. Нажмите, попробуйте. Как показано ниже:
Заголовки баоди, кода и ответов, возвращенные этим интерфейсом, были успешно возвращены.
Суммировать
Выше приведено метод интеграции фреймворка Swagger2 в Springboot, представленный вам редактором. Я надеюсь, что это будет полезно для вас. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит вам вовремя. Большое спасибо за вашу поддержку сайту wulin.com!