簡體   English   中英

HttpResponseMessage作為Json返回什么

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM