POST/PUT 通过 URL 路径与通过 JAX-RS Jersey 中的参数
POST/PUT via URL path vs via parameters in JAX-RS Jersey
我正在 Java 使用 RESTful Jersey API 实现网络服务。
我收到一个 post 使用 2 种不同方式工作的请求。您可以通过 URL post 某些内容到您的服务器,其中包含您要在 URL 路径本身(例如 http://server.se/Context_root/value1/value2/...)中发送的字段值在服务器上定义的订单,您只需:
HttpClient httpclient = new DefaultHttpClient(getHttpParams());
HttpPost httppost = new HttpPost(url);
HttpResponse response = httpclient.execute(httppost);
或者您 post 始终使用相同的 URL(例如 http://server.se/Context_root),并将字段作为参数发送,如下所示:
HttpPost httppost = new HttpPost(url);
httppost.setEntity(new UrlEncodedFormEntity(params));
其中参数类似于:
private ArrayList<NameValuePair> params = new ArrayList<NameValuePair>();
您只需为要发送的每个字段添加 name/value 对:
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 到 post 新经销商信息。
REST 规范不建议使用路径参数传递对象的值。
正如维基百科文章所说 (http://en.wikipedia.org/wiki/Representational_state_transfer),路径代表资源。
我正在 Java 使用 RESTful Jersey API 实现网络服务。
我收到一个 post 使用 2 种不同方式工作的请求。您可以通过 URL post 某些内容到您的服务器,其中包含您要在 URL 路径本身(例如 http://server.se/Context_root/value1/value2/...)中发送的字段值在服务器上定义的订单,您只需:
HttpClient httpclient = new DefaultHttpClient(getHttpParams());
HttpPost httppost = new HttpPost(url);
HttpResponse response = httpclient.execute(httppost);
或者您 post 始终使用相同的 URL(例如 http://server.se/Context_root),并将字段作为参数发送,如下所示:
HttpPost httppost = new HttpPost(url);
httppost.setEntity(new UrlEncodedFormEntity(params));
其中参数类似于:
private ArrayList<NameValuePair> params = new ArrayList<NameValuePair>();
您只需为要发送的每个字段添加 name/value 对:
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 到 post 新经销商信息。
REST 规范不建议使用路径参数传递对象的值。
正如维基百科文章所说 (http://en.wikipedia.org/wiki/Representational_state_transfer),路径代表资源。