Поддерживаемый JDK: 1.8+
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'
Вы можете запустить код ниже в любом 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 в исходном коде.
Комментарий класса будет соответствовать группировке первого уровня. Вы также можете указать имя группы через @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"
}
Мы знаем, что если класс 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
public class UserController {
}
@Ignore
@PostMapping("save")
public ApiResult saveUser(){
return null;
}
Если вы не хотите экспортировать поле в объекте, вы можете добавить аннотацию @Ignore к этому полю, чтобы JApiDocs автоматически игнорировал его при экспорте документа:
Пример:
public class UserForm{
@Ignore
private Byte gender;
}
config.addPlugin(new MarkdownDocPlugin());
Вы можете использовать pandoc для преобразования markdown в pdf или word.
В дополнение к поддержке экспорта документов API, JApiDocs в настоящее время также поддерживает генерацию кодов возвращаемых объектов для Android и iOS, соответствующих языкам Java и Object-C. Если вы хотите изменить шаблон кода, вы можете выполнить следующие действия:
Скопируйте шаблоны кода в каталог ресурсов проекта библиотеки исходного кода, где IOS_ означает шаблон кода Object-C, а JAVA_ начинается с шаблона кода Java. Символ, подобный "${CLASS_NAME}" в шаблоне, является переменной подстановки. Вы поймёте смысл по сравнению с сгенерированным кодом и попытаетесь изменить его в соответствии с желаемым шаблоном кода.
Используйте DocsConfig для замены новым шаблоном:
docsConfig.setResourcePath("ваш новый путь к шаблону");
JApiDocs предоставляет интерфейс плагина. Вы можете реализовать более богатые функции через интерфейс плагина. Ниже описывается, как это сделать:
public class CustomPlugin implements IPluginSupport{
@Override
public void execute(List<ControllerNode> controllerNodeList){
// do something you want
}
}
config.addPlugin(new CustomPlugin());
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )