当前位置: 首页 > 知识库问答 >
问题:

Springdoc中表示表单数据和返回字节数组时出现问题

松和泰
2023-03-14

我有以下一段代码

@PostMapping(value = "/create/{userId}", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public ResponseEntity<Object> saveFile(
        @Parameter(description = "ID of the user") @PathVariable(value = "userId") final String userId,
        @Parameter(description = "Avatar of the user", content = @Content(mediaType = MediaType.APPLICATION_OCTET_STREAM_VALUE)) @RequestParam(value = "avatar", required = true) final MultipartFile file
) {
    ...
}

@GetMapping(value = "/get", produces = MediaType.IMAGE_PNG_VALUE)
@ApiResponse(responseCode = "200", description = "OK", content = {@Content(array = @ArraySchema(schema = @Schema(implementation = Byte.class)))})
public ResponseEntity<byte[]> getFile() {
    ...
}

我如何达到预期的结果?预期结果来自Springfox。

共有2个答案

栾越
2023-03-14

上周我也面临同样的问题。我的解决方案是通过SpringDocUtils将返回类型byte-Array替换为String:

import org.springframework.context.annotation.Configuration;
import org.springdoc.core.SpringDocUtils;

@Configuration
public class OpenApiConfiguration {

    static {
        SpringDocUtils.getConfig()
                        .replaceWithClass(byte[].class, String.class);
    }
}

对我来说,这种方法的优点是每个字节[]都将被字符串表示所取代,因此不需要通过@apisresponse进行相应的显式注释。但我认为这取决于用例。

尹承泽
2023-03-14

对于文件格式,规格上的not type字节。您应该发送类型:字符串,格式:二进制。

  • https://swagger.io/docs/specification/describing-request-body/file-upload/

因此,post方法的requestBody是正确的。

要描述POST方法上字节数组类型的返回,可以添加以下描述:

@ApiResponse(content=@content(schema=@schema(type=“string”,format=“binary”))

 类似资料:
  • 我正在创建一个JavaFX应用程序,我已经很好地连接到了数据库。然而,当我从表中获取数据时,我得到了一个错误 组织。h2.jdbc。JdbcSQLException:未找到表“touch”;SQL语句:从讲座[42102-192]中选择名称 我100%确定我连接到数据库并且表肯定在那里,对为什么会这样有任何建议吗? hear是我的连接代码和我正在运行的代码,以便您可以看到 和正在运行的查询

  • 问题内容: 在下面的: 为什么将-127转换为63?以及如何将其恢复为-127 [编辑:]下面的Java版本(表明它不仅是“ Scala问题”) 问题答案: 您正在调用的构造函数使得二进制到字符串的转换使用解码:变得很明显。您想要的是根本不使用解码。 幸运的是,有一个构造函数:。 现在,您将数据存储在一个字符串中,但是您希望完全照原样返回它。但猜猜怎么了! 没错,还会自动应用一种编码。幸运的是,有

  • 问题内容: 我看到许多人都遇到过类似的问题,但是我还没有尝试确切地找到我想要的东西。 因此,我有一个读取输入图像并将其转换为字节数组的方法: 我现在要做的是将其转换回BufferedImage(我有一个需要此功能的应用程序)。请注意,“ test”是字节数组。 但是,这将返回以下异常: 这是因为BufferedImage img为空。我认为这与以下事实有关:在我从BufferedImage到字节数

  • 我刚刚开始学习SpringMVC。我试图将一些数据从Thymeleaf表单保存到存储库,这扩展了CrudRepository。不幸的是,数据没有显示。 当我进入结果页面时,我看到使用的ID,但没有键入要形成的数据。哪里出了错? 这是控制器 `型号: 存储库: 表格摘录: 并从结果模板中提取:

  • 我对Java和TestNg非常陌生。我创建了下面的DataProvider来返回一个hashmap到我的测试方法,但它似乎失败了,我无法找出问题所在。我正在将一个excel文件读入哈希图,并将其存储在列表中。然后我想返回对象中的hashmap。 感谢任何建议

  • 我看到很多人都有类似的问题,但我还没有试图找到我要找的东西。 因此,我有一个方法读取输入图像并将其转换为字节数组: 这是因为BufferedImage img为空。我认为这与我最初从BufferedImage到字节数组的转换中,信息被更改/丢失,因此数据不能再被识别为JPG有关。 有人对如何解决这个有什么建议吗?不胜感激。