Springfox 在 Swagger 2.0 JSON 定义中创建 'ref' 类型而不是 java.io.File 对象

Springfox creates 'ref' type instead of java.io.File object in Swagger 2.0 JSON Definition

我试图描述一个 REST POST 端点,它使用来自 Swagger 的 Java 注释将两个 java.io.File 对象作为 multipart/form-data 有效负载的一部分。根据初步研究,我发现这可以通过指定具有以下属性集的隐式参数来实现(即 typedataTypeparamType

    @ApiImplicitParams({
        @ApiImplicitParam(
                name="controlFile",
                value="Control file to be used in the comparison.",
                required=true,
                type="file",
                paramType="form",
                dataType="java.io.File"),
        @ApiImplicitParam(
                name="testFile",
                value="Test file to be used in the comparison.",
                required=true,
                type="file",
                paramType="form",
                dataType="java.io.File")
    })
    @PostMapping(
            consumes=MediaType.MULTIPART_FORM_DATA,
            produces=MediaType.APPLICATION_JSON
    )
    public ResponseEntity<Void> submitComparisonRequest(
            final UriComponentsBuilder uriBuilder,
            @Context final HttpServletRequest request) {

        try {
            final FileItemFactory factory = new DiskFileItemFactory();
            final ServletFileUpload upload = new ServletFileUpload(factory);
            final FileItemIterator items = upload.getItemIterator(request);

            final FileItemStream control = items.next();
            final FileItemStream test = items.next();

在描述这些参数的 JSON 合同部分,一切看起来都是正确的 除了 type 字段值是 ref出乎意料的 java.io.File.

"parameters": [
    {
        "name": "controlFile",
        "in": "formData",
        "description": "Control file to be used in the comparison.",
        "required": true,
        "type": "ref"
    },
    {
        "name": "testFile",
        "in": "formData",
        "description": "Test file to be used in the comparison.",
        "required": true,
        "type": "ref"
    }
],

我尝试了几种不同的组合,使用 dataTypedataTypeClassthis SO 问题中的其他策略,但我无法获得 JSON 合同正确生成。

作为参考,我使用的是 Springfox 2.9.2 和 SpringMVC 5.2.2。

在进一步挖掘之后,我发现 @ApiImplicitParam 参数的 dataType 不应该是 java.io.File 对象的完全限定路径,应该指定它作为 __file.

Here 是对 SpringFox 文档的 link。 (在 6.5 覆盖 属性 数据类型下列出)