java - 通过 URL 路径 POST/PUT 与 JAX-RS Jersey 中的参数

标签 java web-services rest jersey jax-rs

我正在使用 RESTful Jersey API 在 Java 中实现 Web 服务。

我收到了一个使用两种不同方式工作的发布请求。您可以通过 URL 将某些内容发布到服务器,其中包含要在 URL 路径本身中发送的字段值(例如 http://server.se/Context_root/value1/value2/.. 。),按照服务器上定义的正确顺序,您只需:

HttpClient httpclient = new DefaultHttpClient(getHttpParams());    
HttpPost httppost = new HttpPost(url);
HttpResponse response = httpclient.execute(httppost);

或者您始终发布到相同的 URL(例如 http://server.se/Context_root ),并将字段作为参数发送,如下所示:

HttpPost httppost = new HttpPost(url);
httppost.setEntity(new UrlEncodedFormEntity(params));

其中 params 类似于:

private ArrayList<NameValuePair> params = new ArrayList<NameValuePair>();

您只需向其中添加要发送的每个字段的名称/值对即可:

params.add(new BasicNameValuePair(field, value));

为什么在同一个 API 中有两种方法来做同样的事情?在什么情况下,一种方式优于另一种方式?

最佳答案

一般情况下,路径参数( http://server.se/Context_root/something )是添加在something对象的上下文中。例如,对于包含一组汽车(库存中有汽车的经销商)的 Web 服务,您将添加如下汽车: http://something.com/dealer1/cars 。通过您的休息服务的 PathParam,您将可以访问经销商的名称以在其中添加汽车。

相反,如果您添加经销商,则无需指定任何内容(城市除外),那么您将执行 http://something.com/dealers发布新经销商信息。

REST 规范不建议使用路径参数传递对象的值。

正如维基百科文章所说( http://en.wikipedia.org/wiki/Representational_state_transfer ),路径代表资源。

关于java - 通过 URL 路径 POST/PUT 与 JAX-RS Jersey 中的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29037248/

相关文章:

Java方法对同一类的不同实例的限制

java - 如何执行 HTTP 删除?我得到的只是网址

java - 在 Visual Studio 2008 中使用 Axis2 Web 服务

java - 如何使用 WSS4J 拦截器在 Web 服务方法中获取经过身份验证的用户

facebook - 如何使用 spring-security-rest :1. 4.0.RC5 在 grails 中获取 facebook 用户的联系人列表

java - 使用用户输入从 JFrame 运行 shell 脚本 (Swing)

java - 如何在java中暂停并继续运行.bat文件

vb.net在POST中接收json数据,其中键有正斜杠

web-services - 在服务器上部署 Web 应用程序但指向许多数据库模式

java - 使用二维数组列表创建棋盘和棋子