我正在现有应用程序之上创建一个RESTAPI。其中一个特性接受JSON数据以及用户上传的文件。

我不确定如何将同一请求中的文件和JSON数据发送到RESTAPI?

我让JSON部件工作,并使用curl测试:

curl -XPOST http://localhost:8080/myapp/foo -d '{"mydata": {

"name":"somename",

"gender":"male"

}}'

//I would like to send an image (say, profile image) with the above request as well.

我使用的是Grails应用程序,所以我在控制器中得到这些数据,就像这样:new Foo(params.mydata)。

问题

是否可以向API发送相同请求中的JSON数据和文件?如果是这样,如何使用curl或rest控制台(chrome扩展)

这个请求的contentType是什么?

如果这意味着我可以在同一个请求中发送文件和其他数据(字符串),那么我可以使用其他格式发送数据。我没有绑在JSON上

更新

我发现了另一个同样的问题。从这个问题的答案来看,似乎只有三个选择,没有一个选择可以在同一个请求中同时发送JSON数据和文件。这是非常令人沮丧的…我将保持这个问题的开放,看看是否有人有其他的想法。

我认为这样做的"正确"方法是使用多部分消息。这样,您就可以使用相应的正确mime类型发布JSON和图像。维基百科关于多部分mime类型的文章提供了一个例子,说明了这一点。看起来ApacheHTTPCommons和Jersey都支持这种方式,显然curl也支持这种方式!

我很困惑。你的回答令人鼓舞,但我发现了另一个与我的问题相同的问题,似乎只有三种选择。没有人说JSON数据和文件可以在同一个请求中发送:stackoverflow.com/questions/4083702/…

我正要建议在您发布的链接中选项3的数量-发送元数据,服务器用一个URI响应,将图像发布到,将图像发送到该URI。然而,multipart/mixed mime类型允许您在同一条消息中有多个内容类型,由您定义的任何"边界"分隔。这将使整体内容类型为multipart/mixed,接下来的两个块是application/json,然后是image/jpeg。

好的,让我用两个块来尝试application/json和image/jpeg的multipart/mixed内容类型。等等,第二个街区image/jpeg怎么办?文件会上传吗?只是想知道如何使用REST控制台chrome插件将此请求作为测试发送:)

java json发送文件_关于java:REST API设计在同一请求中将JSON数据和文件发送到api...相关推荐

  1. java 流 复制文件_【Java】使用字节流复制文件

    其实用java程序复制文件并不难 import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOE ...

  2. java scp发送文件到服务器,Java实现往远程服务器传输文件

    Java实现往远程服务器传输文件 内容精选 换一换 已成功登录Java性能分析.待安装Guardian的服务器已开启sshd.待安装Guardian的服务器已安装JRE,JRE版本要求为Huawei ...

  3. java 导出mdb文件_使用Java创建Access数据库文件(.mdb或.accdb)

    Jackcess 2.x的更新:现在使用DatabaseBuilder创建(或打开)数据库,因此要创建一个新的数据库文件,我们这样做 import java.io.File; import java. ...

  4. java 读取ppt文件_解析Java的InputStream类并借助其读取ppt文件

    1. 关于InputStream.read()     在从数据流里读取数据时,为图简单,经常用InputStream.read()方法.这个方法是从流里每次只读取读取一个字节,效率会非常低.     ...

  5. java 读取 远程文件_利用JAVA获取远程文件及使用断点续传 供学习者使用

    闲来没事,就做做,程序还是要多写才好@ 原理不说,文件方面及I/O方面,去BAIDU一下就知道,断点续传的原理也很简单,就是在原来已经下载的基础之上继续下载就可以了,用到了这么关键的一句:urlc.s ...

  6. java剪切txt文件_用Java把剪切板的内容实时保存到txt

    test类:提示用户程序已启动,提示保存位置,清空剪切板. package com.ariya.service; import com.ariya.service.impl.ClipboardServ ...

  7. java 读取webapp文件_在Java Webapp和Java Normal应用中读取公共外部属性文件

    但是,我们有以下一些特殊要求, Webapp将部署到tomcat. 格式为.jar的普通Java应用程序将放在/ myapp文件夹下 myappConfig.property文件将放置在/ myapp ...

  8. java邮件发送代码_用java代码发送邮件(优化版)

    调用代码如下: if(!StringUtil.isNullOrEmpty(address)){ SendEmailUtil.sendEmail(globalProperties.getEmailSub ...

  9. java写入word文件_使用JAVA写入word文件

    我读了一个word文档,想用 Java写入另一个word文件.我希望将读取文档中的内容的样式(字体,粗体,斜体,标题等)写入,因为它是创建的新文档. 我能够复制内容而不是格式样式. import ja ...

最新文章

  1. 教你玩转CSS 组合选择符
  2. 正弦信号发生器设计——VHDL
  3. Matlab norm 用法小记
  4. git修改本地仓库和远程仓库名称
  5. 【BZOJ-2888】资源运输 LCT + 启发式合并
  6. Nginx下root指令问题
  7. 企业园区全面安防面临的问题及解决之道
  8. python内置函数每个执行一次
  9. Ribbon详解与实例
  10. 记录一次面试经历(深刻)
  11. 电视行业和政策发展历程
  12. mcldownload文件夹_download文件夹是什么?Win7系统download文件夹可以删除?
  13. 微信小程序中用户登录和登录态维护
  14. vue 使用正则判断邮箱格式是否正确 手机号 证件啥的都可以套用
  15. 店铺DSR综合评分的计算维度,淘宝店铺评分结算标准
  16. ibmx3650服务器bios阵列配置安装系统,IBMx3650服务器BIOS阵列配置安装系统(方法二+PXE网启安装法)ok.doc...
  17. Vue 3系列之03——Vue 3使用TypeScript
  18. if函数多个条件php,EXCEL中IF函数多条件判断怎么写
  19. Druid学习笔记(2)Druid架构剖析
  20. 《数据密集型计算和模型》第三章_内存计算复习

热门文章

  1. 新兴内存技术准备突围
  2. Android 自定义ProgressBar 实现进度圆环
  3. ARM Linux 基于S3C2451的AD9833波形发生器/Linux字符驱动的理解
  4. mvc4 ajax grid,mvc4中用上一种grid
  5. Python 精选笔试面试习题—类继承、方法对象、包管理、闭包、可变类型作为默认参数、列表引用、sort与sorted、 append 和 extend、深拷贝和浅拷贝
  6. Ubuntu 下类似 Xshell 工具、更换阿里源
  7. optimize table
  8. Android 5.0新特性之沉浸式状态栏
  9. 点击Notification正确回调到之前已经放置在后台的Task中的对应Activity,而不是创建它的一个新实例...
  10. postmaster.c 中的 ListenAddresses