![](/img/trans.png)
[英]How to return multiple json objects as HttpResponseMessage through Web API?
[英]What does HttpResponseMessage return as Json
我有一個關於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 ???;
}
嘗試這個:
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即可。
您也許可以創建一個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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.