首页 > 解决方案 > 错误 Swagger - 无法解析参考

问题描述

在大摇大摆的情况下,我在 POST 休息时遇到这样的问题

Errors
Resolver error at paths./api/v1/getEntity/{integrationCode}.post.responses.200.schema.items.$ref
Could not resolve reference because of: Could not resolve pointer: /definitions/Map«string,object» does not exist in document

休息控制器:

@RestController
@RequestMapping("api/v1/")
public class RetrieveController {

@PostMapping(value = "getEntity/{integrationCode}", produces = {MediaType.APPLICATION_JSON_VALUE})
public ResponseEntity<List<Map<String, Object>>> getList(@PathVariable String integrationCode, @RequestBody RetrieveParam retrieveParam) throws JsonProcessingException {
List<Map<String, Object>> integration = ...
return ResponseEntity.ok(integration);

输入参数 json 对象看起来像

{
  "fields": [
    "string"
  ],
  "filter": [
    {
      "comparison": "EQ",
      "fieldName": "string",
      "fieldValue": {},
      "operation": "AND"
    }
  ],
  "pagination": {
    "pageNumber": 0,
    "pageSize": 0
  },
  "path": "string",
  "sorts": [
    {
      "fieldName": "string",
      "type": "ASC"
    }
  ]
}

添加 SwaggerConfig 规则后(其余返回响应实体,如List<Map<String, Object>>

.alternateTypeRules(
                    AlternateTypeRules.newRule(
                            typeResolver.resolve(List.class, WildcardType.class),
                            typeResolver.resolve(Map.class, String.class, Object.class)
                    )
            )

json 对象看起来像

{
  "fields": {
    "additionalProp1": {},
    "additionalProp2": {},
    "additionalProp3": {}
  },
  "filters": {
   "additionalProp1": {},
    "additionalProp2": {},
    "additionalProp3": {}
  },
  "pagination": {
    "pageNumber": 0,
    "pageSize": 0
  },
  "path": "string",
  "sorts": {
    "additionalProp1": {},
    "additionalProp2": {},
    "additionalProp3": {}
  }
}

更改 SwaggerConfig 规则后关于

          typeResolver.resolve(List.class, Map.class),
          typeResolver.resolve(Map.class, String.class, Object.class), Ordered.HIGHEST_PRECEDENCE

错误并没有消失

在下一个配置规则之后:

typeResolver.resolve(List.class, WildcardType.class),
                                    typeResolver.resolve(Map.class,
                                            typeResolver.resolve(String.class, Object.class))

部署异常:

Factory method 'api' threw exception; nested exception is java.lang.IllegalArgumentException: Can not create TypeBinding for class java.lang.String with 1 type parameter: class expects 0

请帮助我:

标签: javaswaggerspringfox

解决方案


推荐阅读