Неожиданный возврат данных из API с использованием HTTPResponseMesssage - PullRequest
0 голосов
/ 11 июня 2018

У меня есть проблема, когда в моём теле ответа возвращаются данные, которые я не хотел включать, и мои данные, которые я хочу вернуть, там не были включены.Я пытаюсь сделать это, используя 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 голосов
/ 11 июня 2018

Вот один из способов сделать это, используя функцию CreateResponse.Это создаст вывод json из объекта, который вы передали в функцию CreateResponse.

Ответ будет выглядеть следующим образом.

{"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);
    }
...