предисловие
В этой статье рассказывается о расслабляющем контенте (во всяком случае, я чувствую себя очень расслабленным и разряженным. После прочтения этой статьи я собираюсь спать спокойно)
Когда вы часто отлаживаете интерфейс, вам нужно предоставить документацию (это раздражает). Если это только что написанный интерфейс, то ладно. Боюсь, что это старый интерфейс. Логика различных возвращаемых значений не очень понятна. Я не могу найти исходный документ, если найду. Если найду, он должен быть последним. В этот момент мне было интересно, могу ли я сделать что-нибудь для автоматического создания документации. Решите давнюю проблему, что этот документ не соответствует коду.
К счастью, хорошие люди всегда совпадают, я просто искал и нашел ихSwagger
. Хотя страница немного некрасивая, это не повредит. Ведь я коннотативная личность, и внешний вид при выключенных фарах (не за рулем) одинаков. Так вот записываю с нуля какSpringBooot
построенWeb
Используйте этот инструмент в проекте.
Поскольку это первое исследование, неизбежно, что полезная поза будет неправильной, и это определенно не лучшая практика. Не совсем учебная статья, я называю это减压文
, Если какой-либо читатель увидит это и подумает, что я ввел его в заблуждение, вы можете ударить меня, если у вас есть возможность.
текст
Введение
Так как это использование инструментов, сделать краткое представление себя. Я,Swagger
основывается наJava
Annotation — это фреймворк для создания онлайн-документов, мой принцип очень прост. Как человек с инструментами, вам нужно только сосредоточиться на том, как использовать его на самом высоком уровне.
Springboot интегрирует Swagger
Откройте свойPOM
, импортируйте следующие зависимости. нетPOM
? Пожалуйста, нажмите кнопку закрытия в правом верхнем углу, я думаю, ваше настроение будет лучше.
<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>
Кроме того, конфигурация должна быть активирована автоматически, как правило, на основеannotation
изSpring
Добавить в класс конфигурации@EnableSwagger2
аннотация. Нет классов конфигурации на основе аннотаций? Пожалуйста, нажмите кнопку закрытия в правом верхнем углу, я думаю, ваше настроение будет лучше.
@EnableSwagger2
@Configuration
public class PayOpenApiConfiguration{
@Bean
public Docket customDocket() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
Contact contact = new Contact("pleuvoir", "https://github.com/pleuvoir/compose-pay", "pleuvoir@foxmail.com");
return new ApiInfoBuilder()
.title("支付系统开放API")
.description("支付系统开放API")
.contact(contact)
.version("1.0.0")
.build();
}
}
также необходимо определитьDocket
Объект, используемый для настройки некоторых эффективных параметров. вRequestHandlerSelectors.any()
настроенSwagger
Область сканирования пакетов также можно настроить какRequestHandlerSelectors.basePackage("io.github.pleuvoir")
Пакет, указанный в проекте. Последний пакет, который я настроил, потому что сany
это дало мне немногоError
Соответствующие вещи вышли, кто вас просил выйти, отдайте мне.
apiInfo
Настроенное содержимое включает заголовок, описание, версию, контактную и другую информацию. Я верю, что вы умны, и вы поймете с первого взгляда.Что касается того, какие еще конфигурации в нем есть, нажмите на него, и вы узнаете.Я не хочу больше об этом говорить.
С этими уровнями структуры конфигурации работа по настройке завершена, и следующим шагом является вход в долгожданныйapi
раздел заявления. Что, не ждешь? Давай расстанемся, мы уже не те. Пожалуйста, нажмите кнопку закрытия в правом верхнем углу, я думаю, ваше настроение будет лучше.
Пример конфигурации интерфейса Swagger
Как упоминалось в начале статьи, это инструмент, который использует аннотации для создания документации. Итак, давайте посмотрим, какие есть аннотации. Для удобства зрителей я свел их в таблицу.
аннотация | объем |
---|---|
@Api | сорт |
@ApiOperation | метод |
@ApiParam | метод ввода |
@ApiImplicitParam | метод ввода |
@ApiImplicitParams | метод ввода |
@ApiModel | класс сущности |
@ApiModelProperty | Свойства в классах сущностей |
@ApiIgnore | класс/метод/метод ввода |
Вы не поверите, всего несколько аннотаций, и эти прицелы, мне неприятно смотреть, кроме того, эти прицелы могут ошибаться, когда их разбирают. В конце концов, я просто использовал@ApiOperation @ApiModel @ApiModelProperty
, если не верите мне, посмотрите сами.
Говоря тысячу вещей и десять тысяч, лучше посмотреть код:
@ApiOperation(value = "发红包", notes = "创建红包活动", httpMethod = "POST", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@RequestMapping(value = "createActivity", method = RequestMethod.POST)
public ResultMessageDTO<CreateActivityResultDTO> createActivity(@ApiParam @RequestBody CreateActivityDTO createActivityDTO) {
ResultMessageDTO data = new ResultMessageDTO();
data.setData(System.currentTimeMillis());
return data;
}
@ApiModel("创建红包活动返回实体类")
public class CreateActivityDTO implements ToJSON {
@ApiModelProperty("总金额")
private BigDecimal totalAmount;
@ApiModelProperty("用户编号")
private Long userId;
@ApiModelProperty("红包总数")
private Integer total;
}
@ApiModel("创建红包活动返回结果实体类")
public class CreateActivityResultDTO {
@ApiModelProperty("活动id")
private Long activityId;
}
Другие учебники говорят, чтоController
добавить в класс@Api
Заметьте, я попробовал это, и это нормально, я не буду добавлять это. Я простой и простой человек, люблю простоту, простота - это красота, надеюсь, что человек, которого я люблю, тоже простой человек.
После завершения настройки зайдите на встроенную страницу по адресу запроса вашего проекта, здесь яhttp://127.0.0.1:8081/swagger-ui.html
, вы можете увидеть绿汪汪
всплывает страница. Конечно я здесь просто пример, соответствующий интерфейс платежной системы не реализован, так что берите другие滥竽充数
.
Кстати, когда я нажал кнопку отправить красные конверты, я обнаружил одну вещь:
Для меня есть кнопкаTry一Try
, я не мог этого вынести, поэтому я попытался пнуть его, но я не надеялся найти новое счастье в серости.
Эта штука немного интересная, можно прямо в фон запросить, может на будущее поленится?Postwomen
Ну, я немного волнуюсь, когда думаю об этом.
Увидев это возвращаемое значение, я не могу не вздохнуть,科技从业者的快乐就是这么简单
. Давненько меня не рвало ароматом, хотя не знаю кого ругала, но он такой расслабляющий! Сегодня я просто хочу сделать один тихо祖安男孩
.
возможные проблемы
а такжеguava
конфликт версий
Согласно сообщению об ошибке, Ning может потребоваться исключить версию, и вы можете попробовать это самостоятельно.
Страница не найдена
доступ/swagger-ui.html
Страница не найдена, потому чтоSwagger
Страница попала вJAR
середина.
Решение: еслиSpringboot
в реализацииWebMvcConfigurer
Добавьте следующий код в класс конфигурации:
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("swagger-ui.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
}
Тогда вы можете посетить снова. Если это не хорошо, вы можете проверить это сами, я тоже не буду.
Центр распределения ресурсов
послесловие
Мне нечего сказать, желаю всем крепкого здоровья, всего самого наилучшего, а я помолодела лет на пять после прочтения этой статьи. Не всегда восемнадцать, но каждый год кому-то восемнадцать. Спокойной ночи, сладких снов.