Skip to content

后端常见问题答疑

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));
}

最后更新于: