如何在 REST API 中传递多个参数

Posted

技术标签:

【中文标题】如何在 REST API 中传递多个参数【英文标题】:How to pass multiple parameters in rest API's 【发布时间】:2018-11-07 16:41:07 【问题描述】:

http://www.mkyong.com/webservices/jax-rs/restful-java-client-with-jersey-client/

我使用此链接从我的应用程序中进行了休息呼叫。在这里,我可以将一个对象作为输入参数传递。

Client client = Client.create();

WebResource webResource = client  .resource("http://localhost:8080/RESTfulExample/rest/json/metallica/post");

String input = "\"singer\":\"Metallica\",\"title\":\"Fade To Black\"";

ClientResponse response = webResource.type("application/json")         .post(ClientResponse.class, **input**);

我需要传递多个输入参数(如图像、字符串等)来代替输入,而不是作为一个对象。我该如何解决这个问题?

【问题讨论】:

看这里***.com/questions/38032635/… 【参考方案1】:

如果您想拥有其他类型的多个部分,您应该使用 Multipart,您可以找到更多关于 here 的信息。例如,您可以有一个图像部分和两个字符串部分。

您也可以将图像作为 Base64 字符串发送到您的对象中,但这会增加它的大小。更好的方法是在对象内部传递 byte[]。

一种可能性是将所有这些数据作为多个查询参数发送,但这会非常糟糕,而且 url 的大小也是有限的。

【讨论】:

【参考方案2】:

学习更多关于HTTP的各种方法和HTTP的请求响应模型。***是一个很好的起点:https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol

通常数据通过以下方式从客户端传递到服务器:

    通过 GET/DELETE 查询和路径参数 文本、多部分、消息、图像、音频、视频、应用程序等,在Content-Type HTTP 标头的帮助下通过 POST/PUT。在What are all the possible values for HTTP "Content-Type" header? 阅读有关各种内容类型的更多信息

如果您需要同时发送各种内容类型,例如图像和文本,只需将图像转换为字节数组形式的字符串并与文本一起发送。

【讨论】:

以上是关于如何在 REST API 中传递多个参数的主要内容,如果未能解决你的问题,请参考以下文章

如何在 WCF Rest Service 中传递多个参数?

如何使用JSON正文在REST API POST方法中传递多个记录

如何在 WCF Rest Service 中传递多个参数:C# 中的字符串和流

Rest api如何获取参数?

如何在 Context API 中传递路由参数

如何使用 api rest 传递 flink 流作为参数并返回转换后的流