2

我是 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)
{
}

在 Google Chrome 的 RestConsole 中测试这些方法,发送 json 数据:

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

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

4

1 回答 1

3

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

默认情况下,如果参数是“复杂”类型(例如您的 Credit 类),Web API 从请求正文中获取参数值。如果参数是“简单”类型(例如,int 或字符串),则 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 请求。

于 2013-10-08T21:11:02.050 回答