Платежная система - Вам не понять счастья Swagger [Текст декомпрессии]

Java

предисловие

В этой статье рассказывается о расслабляющем контенте (во всяком случае, я чувствую себя очень расслабленным и разряженным. После прочтения этой статьи я собираюсь спать спокойно)

Когда вы часто отлаживаете интерфейс, вам нужно предоставить документацию (это раздражает). Если это только что написанный интерфейс, то ладно. Боюсь, что это старый интерфейс. Логика различных возвращаемых значений не очень понятна. Я не могу найти исходный документ, если найду. Если найду, он должен быть последним. В этот момент мне было интересно, могу ли я сделать что-нибудь для автоматического создания документации. Решите давнюю проблему, что этот документ не соответствует коду.

К счастью, хорошие люди всегда совпадают, я просто искал и нашел ихSwagger. Хотя страница немного некрасивая, это не повредит. Ведь я коннотативная личность, и внешний вид при выключенных фарах (не за рулем) одинаков. Так вот записываю с нуля какSpringBoootпостроенWebИспользуйте этот инструмент в проекте.

Поскольку это первое исследование, неизбежно, что полезная поза будет неправильной, и это определенно не лучшая практика. Не совсем учебная статья, я называю это减压文, Если какой-либо читатель увидит это и подумает, что я ввел его в заблуждение, вы можете ударить меня, если у вас есть возможность.

текст

Введение

Так как это использование инструментов, сделать краткое представление себя. Я,Swaggerосновывается наJavaAnnotation — это фреймворк для создания онлайн-документов, мой принцип очень прост. Как человек с инструментами, вам нужно только сосредоточиться на том, как использовать его на самом высоком уровне.

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, вы можете увидеть绿汪汪всплывает страница. Конечно я здесь просто пример, соответствующий интерфейс платежной системы не реализован, так что берите другие滥竽充数.

swagger-ui
swagger-ui

Кстати, когда я нажал кнопку отправить красные конверты, я обнаружил одну вещь:

Для меня есть кнопкаTry一Try, я не мог этого вынести, поэтому я попытался пнуть его, но я не надеялся найти новое счастье в серости.

Эта штука немного интересная, можно прямо в фон запросить, может на будущее поленится?PostwomenНу, я немного волнуюсь, когда думаю об этом.

Увидев это возвращаемое значение, я не могу не вздохнуть,科技从业者的快乐就是这么简单. Давненько меня не рвало ароматом, хотя не знаю кого ругала, но он такой расслабляющий! Сегодня я просто хочу сделать один тихо祖安男孩.

возможные проблемы

а такжеguavaконфликт версий

Согласно сообщению об ошибке, Ning может потребоваться исключить версию, и вы можете попробовать это самостоятельно.

Страница не найдена

доступ/swagger-ui.htmlСтраница не найдена, потому чтоSwaggerСтраница попала вJARсередина.

swagger-ui
swagger-ui

Решение: если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/");
  }

Тогда вы можете посетить снова. Если это не хорошо, вы можете проверить это сами, я тоже не буду.

Центр распределения ресурсов

Байду, ты узнаешь

послесловие

Мне нечего сказать, желаю всем крепкого здоровья, всего самого наилучшего, а я помолодела лет на пять после прочтения этой статьи. Не всегда восемнадцать, но каждый год кому-то восемнадцать. Спокойной ночи, сладких снов.