主题
后端常见问题答疑
maven下载依赖报401错误
检查maven的setting文件中,是否配置研发云制品对应的账号及ApiKey
注意
server中的id,要与项目根路径下pom文件中的repository的id保持一致
xml
<servers>
<server>
<id>artifact.srdcloud.cn-release</id>
<username>用户账号</username>
<password>制品库的API Key</password>
</server>
<server>
<id>artifact.srdcloud.cn-snapshot</id>
<username>用户账号</username>
<password>制品库的API Key</password>
</server>
</servers>
接口提示访问未授权
0.9.6-beta2之前版本(包含)
,后端接口权限验证默认是打开的,开发阶段,可以通过application-biz.yml中的pubinfo.auth.authorization.enable关闭,上生产的时候,在配置菜单资源的时候,权限标识里填入菜单对应的后端接口地址,有菜单权限后就有了后端接口权限。
文件上传接口swagger定义
MultipartFile
参数前加下io.swagger.v3.oas.annotations.parameters.RequestBody
注解
java
@Operation(summary = "上传文件")
@PostMapping(value = "/upload",consumes = "multipart/form-data")
public ResponseData<Long> uploadFile(@RequestBody MultipartFile file){
long id = fileService.uploadFile(file);
return ResponseData.success(id);
}
Long类型swagger文档定义
Long类型参数,前端有可能精度丢失,后端返回时需要序列化为字符串,对应的文档也需要改为string类型(java中的类型可以保持Long不变),可以增加一下swagger注解参数type = "string"
java
@Schema(description = "id",type = "string")
private Long id;
Nginx代理时增加访问前缀后,knife4j文档访问异常
通过Nginx代码后端请求地址时,增加了前缀时,在访问knife4j文档时,会提示。此时需要在Ngin配置中,增加Header:X-Forwarded-Prefix
,值为访问前缀。同时需要在application-sys-base.yml
增加server.forward-headers-strategy=framework
nginx配置示例:
location /demo/api {
#demo为nginx代理前缀,api为后端访问contextPath
proxy_set_header X-Forwarded-Prefix "/demo/api";
proxy_pass http://127.0.0.1:9090/api;
}
application-sys-base.yml配置示例:
yaml
server:
forward-headers-strategy: framework
GET请求使用对象接收参数,swagger入参变成json
Swagger3 以后,GET请求使用对象接收参数需要添加@ParameterObject注解
java
@GetMapping("/getAll")
@Operation(summary = "获取所有Demo", description = "返回所有demo表列表")
public ResponseData<List<Demo>> getAll(@ParameterObject DemoRequestDto request) {
return ResponseData.success(demoServiceImpl.list(request));
}