【发布时间】:2014-07-10 22:11:48
【问题描述】:
我有一个计算定制产品价格的 WebApi 服务。控制器功能为:
public double Get([FromUri]Specifications specifications)
Specifications 是一个允许自定义产品的类:
public class Specifications
{
public string Currency;
public int DesktopLicenses;
public Product Product;
public int Licenses;
}
现在,我如何从 C# 使用此服务。我想避免使用所有 Specifications 变量手动编码 URI 查询,我希望能够直接使用 Specifications 的实例来调用服务。
如果服务是 POST,我可以这样做:
Specifications product = new Specifications( ...);
HttpResponseMessage reponse = httpClient.PostAsJsonAsync("api/pricecalculator", product).Result;
但我在使用 GET 时找不到相同的方法。
【问题讨论】:
-
这与您的要求接近 - 看起来您几乎必须做一个字符串生成器。哪种方式违背了传递对象的想法。 POST 无疑是处理它的最佳方式——难道你无法通过 POST 来处理它吗?它消除了复杂对象传输的麻烦。 stackoverflow.com/questions/13585992/…
-
是的,我提出了这个问题,但正是我想避免在 URI 中手动编码类的所有成员。是的,我可以使用 POST,但是根据指南,当您在服务器中保存一些数据时必须使用 POST,而当您只是获取数据时必须使用 GET。
-
评论区太长,请看下面我的“答案”。简而言之,如果您需要向服务器提供一些复杂的数据以获得结果,您应该使用 POST。通过查询字符串提供它只会增加不必要的头痛。
标签: c# asp.net asp.net-mvc asp.net-web-api