我正在使用RESTful Jersey API在Java中实现web服务。
我有一个使用两种不同方式工作的帖子请求。您可以通过URL将一些内容发布到您的服务器,该URL包含您希望在URL路径本身中发送的字段的值(例如http://server.se/Context_root/value1/value2/..。),按照服务器上定义的正确顺序,您只需:
HttpClient httpclient = new DefaultHttpClient(getHttpParams());
HttpPost httppost = new HttpPost(url);
HttpResponse response = httpclient.execute(httppost);
或者您始终发布到相同的网址(例如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中有两种方法可以做同样的事情?在哪种情况下,一种方式优于另一种方式?
答案 0 :(得分:1)
通常,路径参数(http://server.se/Context_root/something)将添加到某个对象的上下文中。例如,对于包含一组汽车(库存中有汽车的经销商)的Web服务,您将添加如下汽车: http://something.com/dealer1/cars。使用您的休息服务的PathParam,您可以访问经销商的名称以在其中添加汽车。
相反,如果您添加经销商,则无需指定任何内容(可能是城市除外),然后您将http://something.com/dealers发布新的经销商信息。
REST规范建议不要使用路径参数传递对象的值。
正如维基百科文章所述(http://en.wikipedia.org/wiki/Representational_state_transfer),路径代表资源。