gpt4 book ai didi

java - 将 byte[] 与 spring-rest 和 springfox 一起使用

转载 作者:行者123 更新时间:2023-12-01 09:47:51 25 4
gpt4 key购买 nike

我是 REST API 设计新手,对于我正在尝试编写的 API 有两个问题。

我想创建一个服务,通过提供 PDF 文件编码,在数据库中创建一个对象。

我当前的服务如下所示:

@RequestMapping(value = "/create", method = RequestMethod.POST,
produces = MediaType.APPLICATION_JSON_VALUE,
consumes = MediaType.APPLICATION_OCTET_STREAM_VALUE)
public String create(@RequestBody byte[] pdf)

我的问题是:

  1. 是否“建议”将 byte[] 与 REST API 一起使用?PS:该服务将由网络客户端和工具包使用。
  2. 我尝试使用 springfox 来记录我的 API。 UI 工具不允许我提交二进制数据。

我使用了以下注释

    @ApiImplicitParams({
@ApiImplicitParam(name = "pdf", value = "PDF encoding", required = true,
allowMultiple = true,
paramType = "body", dataType = "byte")
})

生成的 JSON 为:

{"type":"array","items":{"type":"string","format":"byte"}}

但是,UI 界面会显示 PDF 编码的文本区域,并以字符串形式提交任何内容。 (例如,如果我提交值“5”,服务器会收到 [53])。

你知道我在这个级别缺少什么吗?

-- 编辑--

PDF 是在客户端从 HTML 表单生成的。所以这不是一个简单的表单提交。

最佳答案

uploading files 的推荐方法是使用MultipartFile。所以我会将签名更改为如下所示。

@RequestMapping(value = "/create", method = RequestMethod.POST,
produces = MediaType.APPLICATION_JSON_VALUE,
consumes = MediaType.MULTIPART_FORM_DATA_VALUE) //<-- NOTE THIS
public String create(@RequestParam("pdf") MultipartFile pdf) //<-- NOTE THIS

其次,对于文档,暂时不要担心 @ApiImplicitParams 的东西。看看上面的解决方案是否有效。

确定其在 swagger-ui 中按预期工作后。使用@ApiParam来记录描述等。@ApiImplicitParams用于记录顾名思义隐式的参数。因此,例如,如果您的方法签名处理像 HttpServletRequest 这样的原始类型,并提取请求中隐式部分的参数,那就是您使用该注释的时候。 p>

关于java - 将 byte[] 与 spring-rest 和 springfox 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37838340/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com