java 方法 returning a java.util.Map 在 openapi 中生成字符串 return 而不是 Map
A java method returning a java.util.Map generates a String return in openapi instead of a Map
我在 class 中从 Java REST 服务生成 OpenAPI
json。它的方法 returns a java.util.Map
.
@Operation(description = "Retourne les communes du Code Officiel Geographique en vigueur une année particulière.")
@RequestMapping(value = "/communes", method=RequestMethod.GET)
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "Communes présentes sur le territoire cette année là, sous la forme d'une Map<String, Commune>.",
content = {@Content(schema = @Schema(implementation = Map.class))}
),
@ApiResponse(responseCode = "500", description = "Un incident est survenu durant l'extraction des communes.")
}
)
public Map<String, Commune> obtenirCommunes(
@Parameter(name = "anneeCOG", description = "Année du Code Officiel Géographique.", example = "2019")
@RequestParam(name="anneeCOG") int anneeCOG) throws TechniqueException {
CodeOfficielGeographique cog = this.cogService.obtenirCodeOfficielGeographique(this.session, anneeCOG);
return cog.getCommunesAsMap();
}
但是生成的 json 没有为我的方法描述 return 类型的映射:
"/cog/communes":{
"get":{"tags":["cog-controller"],
"description":"Retourne les communes du Code Officiel Geographique en vigueur une année particulière.",
"operationId":"obtenirCommunes", "parameters":
[{"name":"anneeCOG","in":"query",
"description":"Année du Code Officiel Géographique.",
"required":true,"schema":{"type":"integer","format":"int32"},"example":2019}],
"responses":{"500":{"description":"Un incident est survenu durant l'extraction des communes.",
"content":{"*/*":{"schema":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/Commune"}}}}},
"200":{"description":"Communes présentes sur le territoire cette année là, sous la forme d'une Map<String, Commune>.",
"content":{"*/*":{"schema":{"type":"string"}}}}}}}
相反,它 return 是 "schema":{"type":"string"}
。
我做错了什么?
是不是我和responseCode = "200"
放在一起的content = {@Content(schema = @Schema(implementation = Map.class))}
错了?
我缺少注释吗?
这个注释是我的麻烦。
@ApiResponse(responseCode = "200", description = "Communes présentes sur le territoire cette année là, sous la forme d'une Map<String, Commune>.",
content = {@Content(schema = @Schema(implementation = Map.class))}
),
内容:
content = {@Content(schema = @Schema(implementation = Map.class))}
必须删除。
我在 class 中从 Java REST 服务生成 OpenAPI
json。它的方法 returns a java.util.Map
.
@Operation(description = "Retourne les communes du Code Officiel Geographique en vigueur une année particulière.")
@RequestMapping(value = "/communes", method=RequestMethod.GET)
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "Communes présentes sur le territoire cette année là, sous la forme d'une Map<String, Commune>.",
content = {@Content(schema = @Schema(implementation = Map.class))}
),
@ApiResponse(responseCode = "500", description = "Un incident est survenu durant l'extraction des communes.")
}
)
public Map<String, Commune> obtenirCommunes(
@Parameter(name = "anneeCOG", description = "Année du Code Officiel Géographique.", example = "2019")
@RequestParam(name="anneeCOG") int anneeCOG) throws TechniqueException {
CodeOfficielGeographique cog = this.cogService.obtenirCodeOfficielGeographique(this.session, anneeCOG);
return cog.getCommunesAsMap();
}
但是生成的 json 没有为我的方法描述 return 类型的映射:
"/cog/communes":{
"get":{"tags":["cog-controller"],
"description":"Retourne les communes du Code Officiel Geographique en vigueur une année particulière.",
"operationId":"obtenirCommunes", "parameters":
[{"name":"anneeCOG","in":"query",
"description":"Année du Code Officiel Géographique.",
"required":true,"schema":{"type":"integer","format":"int32"},"example":2019}],
"responses":{"500":{"description":"Un incident est survenu durant l'extraction des communes.",
"content":{"*/*":{"schema":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/Commune"}}}}},
"200":{"description":"Communes présentes sur le territoire cette année là, sous la forme d'une Map<String, Commune>.",
"content":{"*/*":{"schema":{"type":"string"}}}}}}}
相反,它 return 是 "schema":{"type":"string"}
。
我做错了什么?
是不是我和
responseCode = "200"
放在一起的content = {@Content(schema = @Schema(implementation = Map.class))}
错了?我缺少注释吗?
这个注释是我的麻烦。
@ApiResponse(responseCode = "200", description = "Communes présentes sur le territoire cette année là, sous la forme d'une Map<String, Commune>.",
content = {@Content(schema = @Schema(implementation = Map.class))}
),
内容:
content = {@Content(schema = @Schema(implementation = Map.class))}
必须删除。