1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/yeguozhong-JApiDocs

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Начало работы

Поддерживаемый JDK: 1.8+

Быстрый старт

Шаг 1: Добавление зависимости

maven:

<dependency>
  <groupId>io.github.yedaxia</groupId>
  <artifactId>japidocs</artifactId>
  <version>1.4.4</version>
</dependency>

gradle:

compile 'io.github.yedaxia:japidocs:1.4.4'

Шаг 2: Конфигурация

Вы можете запустить код ниже в любом main():

DocsConfig config = new DocsConfig();
config.setProjectPath("your springboot project path"); // корневой путь проекта
config.setProjectName("ProjectName"); // название проекта
config.setApiVersion("V1.0");       // версия API
config.setDocsPath("your api docs path"); // целевой путь API-документации
config.setAutoGenerate(Boolean.TRUE);  // автоматическая генерация
Docs.buildHtmlDocs(config); // выполнение для генерации

Если всё пройдёт без происшествий, после выполнения этого кода вы увидите сгенерированные документы в настроенном каталоге.

Требования к стилю кода

JApiDocs реализован путём анализа исходного кода Java. Чтобы JApiDocs работал правильно, вам необходимо следовать определённым стандартам кодирования при написании Controller в проекте.

В качестве примера вы можете обратиться к модулю SpringDemo в исходном коде.

1. Добавьте необходимые комментарии к коду

Комментарий класса будет соответствовать группировке первого уровня. Вы также можете указать имя группы через @description; JApiDocs будет использовать @param для поиска параметров для дальнейшего анализа.

/**
 * User API
 */
@RequestMapping("/api/user/")
@RestController
public class UserController {


    /**
     * Get User List
     * @param listForm
     */
    @RequestMapping(path = "list", method = {RequestMethod.GET,  RequestMethod.POST}  )
    public ApiResult<PageResult<UserVO>> list(UserListForm listForm){
        return null;
    }

    /**
     * Save User
     * @param userForm
     */
    @PostMapping(path = "save")
    public ApiResult<UserVO> saveUser(@RequestBody UserForm userForm){
        return null;
    }

    /**
     * Delete User
     * @param userId user id
     */
    @PostMapping("delete")
    public ApiResult deleteUser(@RequestParam Long userId){
        return null;
    }
}

Если отправленная форма имеет тип application/x-www-form-urlencoded, вы можете добавить описание после @param или добавить комментарий в объекте JavaBean:

// в @param
@param userId user id
// at FormBean
public class UserListForm extends PageForm{
    private Integer status; //user status
    private String name; //user name
}

Этот тип формы будет отображаться в виде таблицы в документе:

Имя параметра Тип параметра Обязателен Описание
Статус int Нет Статус пользователя
Имя string Нет Имя пользователя

Если отправленная форма имеет тип application/json, соответствующий аннотации @RequestBody в SpringBoot, она будет отображаться как формат json в документе:

{
  "id": "long //user id",
  "name": "string //user name",
  "phone": "long // user phone",
  "avatar": "string // user avatar url",
  "gender": "byte //use gender"
}

2. Возвращайте определённый класс

Мы знаем, что если класс Controller объявляет @RestController, SpringBoot вернёт данные json на фронтэнд. JApiDocs также использует эту функцию для анализа результата в методе API, но поскольку JApiDocs анализирует исходный код статически, вы должны чётко возвращать определённый класс. JApiDocs поддерживает сложный анализ классов, такой как наследование, дженерики и вложенность циклов.

Например, saveUser:

 /**
 * save user
 * @param userForm
 */
@PostMapping(path = "save")
public ApiResult<UserVO> saveUser(@RequestBody UserForm userForm){
    return null;
}

ApiResult<UserVO> показывает структуру данных ответа, после обработки JApiDocs это выглядит так:

{
  "code": "int",
  "errMsg": "string",
  "data": {
    "userId": "string //user id",
    "userName": "string //user name",
    "friends": [
      {
        "userId": "string //user id",
        "userName": "string //user name"
      }
    ],
    "readBooks": [
      {
        "bookId": "long //book id",
        "bookName": "string //book name"
      }
    ],
    "isFollow": "boolean //is **Если вам не нравится тип *return*, вы также можете использовать @ApiDoc в JApiDoc для объявления типа ответа.** Вы можете обратиться к главе @ApiDoc ниже.

### 3. Api Java Beans должны быть в исходном коде

Мы знаем, что в байт-коде скомпилированного класса нет информации о комментариях. Чтобы JApiDcos работал лучше, ваш класс Form bean и класс возврата должны быть в исходном коде, иначе в сгенерированном документе будет отсутствовать информация описания. В любом случае, в версии 1.4.2 JApiDocs попытается проанализировать информацию о поле с помощью отражения, если не сможет найти исходный код (зависимый класс находится в jar-пакете).

# Расширенная конфигурация

## @ApiDoc

По умолчанию JApiDocs экспортирует только API, который объявляет @ApiDoc. Ранее мы сняли это ограничение, установив config.setAutoGenerate(Boolean.TRUE).

Если вы не хотите экспортировать все API, вы можете отключить autoGenerate и добавить @ApiDoc к классу Controller или методу API, чтобы определить, какой API необходимо экспортировать.

Давайте посмотрим, как работает @ApiDoc на методе API:

* result: тип возвращаемого объекта, он переопределит возвращаемый объект SpringBoot;
* url: URL запроса, расширенное поле, используется для поддержки проектов, отличных от SpringBoot;
* method: метод запроса, расширенное поле, используется для поддержки проектов, отличных от SpringBoot.

Пример:
```java
@ApiDoc(result = AdminVO.class, url = "/api/v1/admin/login2", method = "post")

@Ignore

Игнорирование класса Controller

Добавьте @Ignore в Controller, и все его методы будут игнорироваться.


@Ignore
public class UserController { 
 
}

Игнорировать метод


@Ignore
@PostMapping("save")
public ApiResult saveUser(){
  return null;
}

Игнорировать поле

Если вы не хотите экспортировать поле в объекте, вы можете добавить аннотацию @Ignore к этому полю, чтобы JApiDocs автоматически игнорировал его при экспорте документа:

Пример:

public class UserForm{
   @Ignore
   private Byte gender;
}

Экспорт в других форматах

Экспорт Markdown

config.addPlugin(new MarkdownDocPlugin());

Экспорт Pdf или Word

Вы можете использовать pandoc для преобразования markdown в pdf или word.

Шаблоны пользовательского кода

В дополнение к поддержке экспорта документов API, JApiDocs в настоящее время также поддерживает генерацию кодов возвращаемых объектов для Android и iOS, соответствующих языкам Java и Object-C. Если вы хотите изменить шаблон кода, вы можете выполнить следующие действия:

Шаг первый: изменение шаблонов кода

Скопируйте шаблоны кода в каталог ресурсов проекта библиотеки исходного кода, где IOS_ означает шаблон кода Object-C, а JAVA_ начинается с шаблона кода Java. Символ, подобный "${CLASS_NAME}" в шаблоне, является переменной подстановки. Вы поймёте смысл по сравнению с сгенерированным кодом и попытаетесь изменить его в соответствии с желаемым шаблоном кода.

Второй шаг: использование новых шаблонов кода

Используйте DocsConfig для замены новым шаблоном:

docsConfig.setResourcePath("ваш новый путь к шаблону");

Дополнительные пользовательские функции

JApiDocs предоставляет интерфейс плагина. Вы можете реализовать более богатые функции через интерфейс плагина. Ниже описывается, как это сделать:

Первый шаг: реализация интерфейса IPluginSupport

public class CustomPlugin implements IPluginSupport{
    
    @Override
    public void execute(List<ControllerNode> controllerNodeList){
        // do something you want
    }
}

Второй шаг: добавьте свой плагин

 config.addPlugin(new CustomPlugin());

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/yeguozhong-JApiDocs.git
git@api.gitlife.ru:oschina-mirror/yeguozhong-JApiDocs.git
oschina-mirror
yeguozhong-JApiDocs
yeguozhong-JApiDocs
master