我们目前有一个通用的MVC方法,可以从ASP.NET Web API获取GET数据
public static T Get<T>(string apiURI, object p)
{
using (HttpClient client = new HttpClient())
{
client.BaseAddress = new Uri(Config.API_BaseSite);
HttpResponseMessage response = client.GetAsync(apiURI).Result;
// Check that response was successful or throw exception
if (response.IsSuccessStatusCode == false)
{
string responseBody = response.Content.ReadAsStringAsync().Result;
throw new HttpException((int)response.StatusCode, responseBody);
}
T res = response.Content.ReadAsAsync<T>().Result;
return (T)res;
}
}
我们的问题是: - 显然,我们不能发送&#39; p&#39;就像你发帖子一样,
client.PostAsync(apiURI, new StringContent(p.ToString(), Encoding.UTF8, "application/json")
但我们如何使用get发送此对象/ JSON。 我们已经看到将其作为URL的一部分发送,但是,还有其他选择吗?
答案 0 :(得分:1)
GET 使用查询字符串(url的结尾)发送值,关于&#34;但我们如何使用get发送此对象/ JSON。我们已经看到将其作为URL的一部分发送,但是,是否有替代方案?&#34;。
替代方案是 POST 或 PUT 。
当用户创建密钥/网址时,最好使用PUT 。您可以查看cnn.com等示例 - 其中URL只是文章标题的简短版本。您想要在该网址上设置页面。
有&#34;五个事情 - 你知道的新事物 - 星期三 - 三月 - 19-2014&#34;,这是由文章标题&#34;生成的。新的一天要知道的五件事 - 2014年3月19日,星期三&#34;
一般来说,您应遵循以下准则:
如果要从服务器获取数据,请使用 GET 。想想搜索引擎。您可以在查询字符串中查看搜索查询。您也可以预订标记。它根本不会改变服务器上的任何内容。
如果要创建资源,请使用 POST 。
如果要创建资源,请使用 PUT ,但也会覆盖它们。如果您将对象PUT两次,则服务器状态仅更改一次。 POST
的情况恰恰相反如果要删除内容
,请使用删除POST和PUT都不使用查询字符串。 GET确实