【问题标题】:How to send two object as response message and response code in web api如何在 web api 中发送两个对象作为响应消息和响应代码
【发布时间】:2017-06-15 20:54:31
【问题描述】:

我想发送这样的响应消息

{"message_code": 00, "message": "Success"}

我的响应消息类

 public class ResponseMessage
 {
    public string MessageCode { get; set; }
    public string Message { get; set; }
 }

还有我的消息方法

public ResponseMessage Message(FundTransfer transfer)
{
    var checkBalance = 
    BusinessLayer.Api.AccountHolderApi.GetBalance(transfer.FromAccount);

    if (checkBalance.Balance.ToDecimal() < transfer.Amount)
    {
        return new ResponseMessage
        {
            MessageCode = "22",
            Message = "Insufficient Balance"
        };
    }
    else
    {
        var transferData = BusinessLayer.Api.AccountHolderApi
            .FundTransfer(transfer);

        if (transferData == true)
        {
            return new ResponseMessage { MessageCode = "00", Message = "Success" };
        }
        else
        {
            return new ResponseMessage { MessageCode = "11", Message = "Some Error" };
        }
    }  
}

还有我的 API 方法

[HttpPost]
[ActionName("transfer")]
public IHttpActionResult FundTransfer([FromBody] FundTransfer transfer)
{
    var response = Message(transfer);
    if (response.MessageCode == "11")
    {
        return Content(HttpStatusCode.BadRequest, response.Message);
    }
    else
    {
        return Ok(response.Message);
    }
}

例如,当transferData == true 在我的Message() 方法中我只得到消息对象值作为“成功”,因为在我的返回内容中我返回response.Message。我想以 JSON 格式获取响应

{"message_code": 00, "message": "Success"}

而不仅仅是"success"

目前正在学习 Web API。

【问题讨论】:

    标签: c# asp.net-web-api


    【解决方案1】:

    重构 API 方法以返回模型而不仅仅是消息属性

    [HttpPost]
    [ActionName("transfer")]
    public IHttpActionResult FundTransfer([FromBody] FundTransfer transfer) {
        var response = Message(transfer);
        if (response.MessageCode == "11") {
            return Content(HttpStatusCode.BadRequest, response);
        } else {
            return Ok(response);
        }
    }
    

    也能收到这样的消息

    {"message_code": "00", "message": "Success"}
    

    通过 JSON 属性重构 ResponseMessage 类...

     public class ResponseMessage {
        [JsonProperty("message_code")]
        public string MessageCode { get; set; }
        [JsonProperty("message")]
        public string Message { get; set; }
     }
    

    或者匿名构建模型

    [HttpPost]
    [ActionName("transfer")]
    public IHttpActionResult FundTransfer([FromBody] FundTransfer transfer) {
        var response = Message(transfer);
        var model = new {
            message_code = response.MessageCode,
            message = response.Message
        };
        if (response.MessageCode == "11") {
            return Content(HttpStatusCode.BadRequest, model);
        } else {
            return Ok(model);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-06
      • 2021-01-04
      • 1970-01-01
      • 1970-01-01
      • 2017-02-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多