接口拦截器配置
>s 接口扫描在本插件中是最重要的部分,一个接口包含了请求地址,请求方式,请求方法等多个重要元素,本文介绍如何自定义接口元素的读取
[ApiExtra参数](doc:S3E9eryY)是拦截器解析依据的重要参数
```java
/**
* 接口文档配置
*/
@Configuration
public class EasyApiConfig extends DefaultConfigurationCreator {
@Override
public AllConfiguration replenish(AllConfiguration configuration) {
//拿到接口配置类,根据自身的规则定义文档生成规则
ReadInterfaceConfig interfaceConfig = configuration.getReadInterfaceConfig();
return super.replenish(configuration);
}
}
```
### 接口拦截器配置:**ReadInterfaceConfig** ,具体可配置规则如下
**addReadInterfaces** : `根据controller类读取接口规则,返回接口方法集合`
```java
interfaceConfig.addReadInterfaces((controller, extra) -> Arrays.asList(controller.getMethods()));
```
---
**addReadBodyType** : `添加接口入参body体类型读取规则,这个参数设定好会影响ContentType`
```java
interfaceConfig.addReadBodyType((method, extra) -> BodyType.FORM);
```
---
**addReadCustomSearch** : `添加接口自定义搜索标签,easypai会根据接口名、接口路径、拼音等形式提供快速搜索接口,本项配置不会影响默认搜索标签,是在默认的基础上进行追加`
```java
interfaceConfig.addReadCustomSearch((method, extra) -> Collections.singletonList("快速搜索"));
```
---
**addReadDescription** : `添加接口描述的读取规则`
```java
interfaceConfig.addReadDescription((method, extra) -> "这是一个特别的接口");
```
---
**addReadIgnore** : `添加接口忽略规则,返回true则本接口不会被解析`
```java
interfaceConfig.addReadIgnore((method, extra) -> false);
```
---
**addReadRenewTypes** : `添加接口更新策略,当扫描的接口已存在时,需要指定更新策略,包过替换覆盖、增量更新和跳过更新,默认增量更新`
```java
interfaceConfig.addReadRenewTypes((method, extra) -> RenewType.overwrite);
```
---
**addReadRequestMethods** : `添加接口请求方法规则`
```java
interfaceConfig.addReadRequestMethods((method, extra) -> RequestMethod.POST);
```
---
**addReadRequestUrls** : `添加接口访问路径规则`
```java
interfaceConfig.addReadRequestUrls((method, extra) -> "/apis");
```
---
**addReadShowNames** : `添加接口显示名称规则`
```java
interfaceConfig.addReadShowNames((method, extra) -> method.getName());
```
---
**addReadUniques** : `添加接口唯一标识规则,最好不要改变,系统会默认生成。唯一标识是在扫描接口判断是否相同的重要数据`
```java
interfaceConfig.addReadUniques((method, extra) -> method.toGenericString());
```
---
**addReadVerifyMockTags** :`添加接口mock时接口确认规则,在客户端请求mock时会携带接口标识或接口路径,配置本项可以对客户端传递的标识做验证,是不是要请求当前接口`
```java
interfaceConfig.addReadVerifyMockTags((tag, entity) -> tag.equals(entity.getUnique()));
```
---
**addReadShows** :`添加当前接口是否显示规则,如果设置false,则本接口不显示在页面中,但会扫描并生成数据`
```java
interfaceConfig.addReadShows((method, extra) -> true);
```
---
**addReadReqPackages** : `添加是否对请求参数进行包装规则,本参数是对高度封装的框架做处理,框架通常会使用拦截器将接口请求再次进行封装,通过设置本项来确定需不需要进行包装,具体包装设置请参照页面功能【参数包装】`
```java
interfaceConfig.addReadReqPackages((method, extra) -> true);
```
---
**addReadResPackages** : `添加是否对响应参数进行包装规则,本参数是对高度封装的框架做处理,框架通常会使用拦截器将接口返回再次进行封装,通过设置本项来确定需不需要进行包装,具体包装设置请参照页面功能【参数包装】`
```java
interfaceConfig.addReadResPackages((method, extra) -> true);
```
---
### 接口拦截器默认实现类
InterfaceBodyTypeCommentReader : `根据spring规则确认请求体类型`
InterfaceDescApiReader :`根据ApidocComment注解解析接口说明`
InterfaceDescSwaggerReader :`根据swagger注解解析接口说明`
InterfaceIgnoreApiReader :`根据ApidocComment注解解析忽略规则`
InterfaceIgnoreSwaggerReader :`根据swagger注解解析忽略规则`
InterfaceRequestMethodCommentReader :`根据spring规则解析请求方法`
InterfaceRequestUrlCommentReader :`根据spring规则解析请求路径`
InterfacesCommentReader :`根据RequestMapping相关注解扫描接口`
InterfaceShowApiReader :`根据ApidocComment注解解析显示规则`
InterfaceShowNameApiReader :`根据ApidocComment注解解析接口显示名称`
InterfaceShowNameSwaggerReader :`根据swagger注解解析接口显示名称`
InterfaceUniqueCommentReader :`解析接口唯一标识`
InterfaceVerifyMockTagCommentReader :`解析mock接口确认规则,默认根据唯一标识或接口路径解析`