我有一个关于Web Api基础知识的基本问题。仅供参考,我之前已经查过但是找不到我要找的东西。
我有一段代码如下所述。就像任何其他方法一般来说我的方法叫做:Post,它必须返回一些东西,例如JSON,我该怎么做。 具体来说,为了将3个字段(loginRequest.Username,loginRequest.Password,loginRequest.ContractItemId)作为Json获取,我应该在“return”之后写一下。 Coments:不要担心用户名,密码和contractID在评论中,我确实在我的LinQ中获得了它们的价值。这只是我现在回归的问题,向所有希望对此发表一些笔记的人致以问候。
[System.Web.Http.HttpPost]
public HttpResponseMessage Post(LoginModel loginRequest)
{
//loginRequest.Username = "staw_60";
//loginRequest.Password = "john31";
//loginRequest.ContractItemId = 2443;
try
{
Membership member =
(from m in db.Memberships
where
m.LoginID == loginRequest.Username
&& m.Password == loginRequest.Password
&& m.ContractItemID == loginRequest.ContractItemId
select m).SingleOrDefault();
}
catch (Exception e)
{
throw new Exception(e.Message);
}
return ???;
}
答案 0 :(得分:24)
试试这个:
HttpResponseMessage response = new HttpResponseMessage();
response.Content = new ObjectContent<Response>(
new Response() {
responseCode = Response.ResponseCodes.ItemNotFound
},
new JsonMediaTypeFormatter(), "application/json");
或者只是从Request对象本身创建另一个响应。
return Request.CreateResponse<Response>(HttpStatusCode.OK,
new Response() { responseCode = Response.ResponseCodes.ItemNotFound })
您还可以通过更新HttpConfiguration(Formatter.Remove)将所有响应类型转换为JSON,只需删除默认的xml序列化并放入JSON。
答案 1 :(得分:17)
您可以创建一个LoginResponseModel
类,您可以使用该类向调用者发送有关登录尝试成功/失败的信息。类似的东西:
public class LoginResponseModel
{
public bool LoginSuccessful {get; set;}
public string ErrorMessage {get; set;}
public LoginResponseModel()
{
}
}
如果您愿意,可以直接从控制器返回:
[System.Web.Http.HttpPost]
public LoginResponseModel Post(LoginModel loginRequest)
{
...
return new LoginResponseModel() { LoginSuccessful = true, ErrorMessage = "" };
}
或者您仍然可以使用HttpResponseMessage
作为返回类型,但发送LoginResponseModel
作为json响应:
[System.Web.Http.HttpPost]
public HttpResponseMessage Post(LoginModel loginRequest)
{
...
var resp = Request.CreateResponse<LoginResponseModel>(
HttpStatusCode.OK,
new LoginResponseModel() { LoginSuccessful = true, ErrorMessage = "" }
);
return resp;
}