我正在使用 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/