【问题标题】:Difference between HttpGet and HttpPost in Asp.Net Web ApiAsp.Net Web Api中HttpGet和HttpPost的区别
【发布时间】:2013-10-15 18:48:03
【问题描述】:

我是 web api asp.net MVC 的初学者,我有一个问题。 我有一个类,我将在 web api HttpGet 和 HttpPost 中使用:

public class Credit
{
public string Log {get; set;}
public string Pas {get; set;}
}

在我的示例 API 控制器中:

[HttpGet]
public void Login (Credit credit)
{
}

[HttpPost]
public void Login (Credit credit)
{
}

在谷歌浏览器的 RestConsole 中测试这些方法,发送 json 数据:

{"Log", "test", "Pas": "test"}

在调试这些方法时,我看到 HttpPost 工作正常,并且“credit”参数填充了属性。 但是 HttpGet 不能正常工作,对象没有填充属性,它是 NULL。 有人可以向我解释一下这种情况以及如何在 HttpGet 中获取完整的对象吗?

【问题讨论】:

    标签: json null http-post asp.net-web-api http-get


    【解决方案1】:

    这是因为 Web API 如何从 HTTP 请求创建参数值。

    默认情况下,如果参数是“复杂”类型(例如您的 Credit 类),Web API 从请求正文中获取参数值。如果参数是“简单”类型(例如 int 或 string),则 Web API 从请求 URI 中获取值。

    但是,HTTP GET 请求不能有请求正文。因此,默认情况下,您不能将复杂类型传递给 Web API “GET”方法。

    您可以在这里阅读更多内容:http://www.asp.net/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api

    无论如何,对于登录方法,您可能应该使用 POST 请求,而不是 GET 请求。

    【讨论】:

      猜你喜欢
      • 2014-10-28
      • 2013-03-01
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-16
      相关资源
      最近更新 更多