gpt4 book ai didi

java - 如何实现接收文件和其他参数的 REST API

转载 作者:行者123 更新时间:2023-12-01 14:36:17 26 4
gpt4 key购买 nike

我有一个将通过如下 URI 访问的 api:

POST: http://<domain>/app/rest/colors

此 post 请求将随文件一起发送一些字符串参数(即 name: "red")。理想情况下,我希望以 JSON 格式提供给 API 的数据,但如果没有办法将文件传递给 JSON,那么我也可以接受其他格式。

目前,当我从表单帖子中获取参数时,我的 Controller 操作看起来像这样:

def save() {
def colorInstance = new Color(params)
CommonsMultipartFile file = request.getFile('filename')
fileUploadService.upload(file)
if (colorInstance.save(flush: true)) {
flash.message = "Created"
redirect(action: "list")
}
else {
render(view: "create", model: [colorInstance: colorInstance])
}
}

问题

  • 如何将文件传递到 REST API?还可以是JSON吗?
  • 如何在保存操作中访问该文件
  • 如何使用 curl 测试操作

例如,我通常会这样做

curl -XPOST http://<domain>/app/rest/colors -d '{
"name": "red",
"shade": "light"
}'

但现在我想发送一个文件以及这两个参数

最佳答案

如果您正在使用 Jersey,那么在服务器端您应该这样做:

@POST
@Path("/upload/user/{email}/")
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces({MediaType.APPLICATION_JSON})
public ErrorDO uploadFile(
@FormDataParam("file") InputStream uploadedInputStream,
@FormDataParam("file") FormDataContentDisposition fileDetail,
@PathParam("email") String email, @Context HttpServletRequest hsr) {

String name=fileDetail.getFileName();
// TODO now just read from the inputstream and do what you want with it
}

关于客户端,就是一个简单的post请求,你可以阅读一下here或其他任何地方

关于java - 如何实现接收文件和其他参数的 REST API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16461257/

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