使用HTTPResponseMesssage从API返回意外的数据

时间:2018-06-11 10:40:34

标签: c# httpresponse httpresponsemessage

我有这个问题,在我的Response Body中返回我不想包含的数据,我想要返回的数据没有包含在那里。我尝试使用Swagger v1.0

退回数据

{
 "version": {
    "major": 1,
    "minor": 1,
    "build": -1,
    "revision": -1,
    "majorRevision": -1,
    "minorRevision": -1
  },
  "content": {
    "headers": [
      {
        "key": "Content-Type",
        "value": [
          "application/json"
        ]
      }
    ]
  },
  "statusCode": 200,
  "reasonPhrase": "OK",
  "headers": [],
  "isSuccessStatusCode": true
}

预期回报

enter image description here

这是我的代码:

[HttpGet]
    [Authorize]
    public HttpResponseMessage GetStudent(int id)
    {
        try
        {
            var student = _studentService.Find(id);
            return ModelHelper.ComposeResponse(HttpStatusCode.OK, student);
        }
        catch (Exception ex)
        {
            var exceptionMessage = ModelHelper.GetErrors(ex, _mailService);
            ModelState.AddModelError(new ValidationResult(exceptionMessage));
        }
        return ModelHelper.ComposeResponse(HttpStatusCode.BadRequest, ModelHelper.GetModelStateErrors(ModelState));
    }

帮助代码

 public static HttpResponseMessage ComposeResponse(HttpStatusCode statusCode, object responseData)
        {
            var jsonResponse = JsonConvert.SerializeObject(responseData);
            var resp = new HttpResponseMessage
            {
                StatusCode = statusCode,
                Content = new StringContent(jsonResponse, Encoding.UTF8, Constants.Common.ApplicationJson)
            };

            resp.Content.Headers.ContentType = new MediaTypeHeaderValue(Constants.Common.ApplicationJson);

            return resp;
        }

1 个答案:

答案 0 :(得分:0)

以下是使用CreateResponse函数进行此操作的一种方法。这将从您传递给CreateResponse函数的对象创建一个json输出。

响应将如下所示。

  

{ “Stud_id”:1, “Stud_name”: “测试”}

    public class StudentObject
    {
        public int Stud_id { get; set; }
        public string Stud_name { get; set; }
    }

    [HttpGet]
    public HttpResponseMessage GetStudent(int id)
    {
        StudentObject studentObject = new StudentObject
        {
            Stud_id = 1,
            Stud_name = "test"
        };
        return Request.CreateResponse(System.Net.HttpStatusCode.OK, studentObject);
    }