REST API Design sending JSON data and a file to the api in same request
我正在现有应用程序之上创建一个RESTAPI。其中一个特性接受JSON数据以及用户上传的文件。
我不确定如何将同一请求中的文件和JSON数据发送到RESTAPI?
我让JSON部件工作,并使用curl测试:
1 2 3 4 5 | 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应用程序,所以我在控制器中得到这些数据,就像这样:
问题
- 是否可以向API发送相同请求中的JSON数据和文件?如果是这样,如何使用curl或rest控制台(chrome扩展)
- 这个请求的
contentType 是什么? - 如果这意味着我可以在同一个请求中发送文件和其他数据(字符串),那么我可以使用其他格式发送数据。我没有绑在JSON上
更新
我发现了另一个同样的问题。从这个问题的答案来看,似乎只有三个选择,没有一个选择可以在同一个请求中同时发送JSON数据和文件。这是非常令人沮丧的…我将保持这个问题的开放,看看是否有人有其他的想法。
我认为这样做的"正确"方法是使用多部分消息。这样,您就可以使用相应的正确mime类型发布JSON和图像。维基百科关于多部分mime类型的文章提供了一个例子,说明了这一点。看起来ApacheHTTPCommons和Jersey都支持这种方式,显然curl也支持这种方式!