Чтение тела запроса POST в контроллере в C# - PullRequest
0 голосов
/ 22 апреля 2020

Я создаю прототип реализации API и сталкиваюсь с основной проблемой c невозможности прочитать JSON объект, который я передал в теле запроса из Fiddler. Моя реализация основана на некоторых примерах, которые я нашел в разных уроках для начинающих.

Это мой вызов API:

https://{Something}/servername/{something1}/checkAvailability?{api-version}

Это запрос POST и тело запроса (JSON) : {name: "resource1", опция: "include"}

Я пытаюсь проанализировать его на контроллере с помощью [FromBody]. Однако параметр [FromBody] всегда читается как нулевой:

    [HttpPost]
    // A bunch of other attributes.
    public HttpResponseMessage CheckAvailability(
        string serverName,
        [FromBody] CheckProperties props)
    {
        // While debugging, I am able to reach here and successfully see the serverName as "something1" which passed in the API
        if (serverName == null || serverName == "")
        {
            return CreateResponse(HttpStatusCode.BadRequest);
        }

        // Able to reach here but the value of props is read as null. What is the right way to read the request body in props(CheckNameProperties) object?
        if (props != null) // props is always null for me.
        {
            // Do something
        }
  }

CheckProperties.cs

public class CheckProperties
    {
        [JsonProperty]
        public string Name{ get; set; }

        [JsonProperty]
        public string Option { get; set; }

        public CheckProperties(string name, string options)
        {
            Name = name;
            Option = options;
        }
    }

Вместо использования объекта я также попытался прочитать простую строку. Но также не мог прочитать это.

Кроме того, если кто-то может поделиться учебниками, которые помогли им иметь хорошее базовое c понимание реализации API, это было бы здорово. Большинство учебных пособий, с которыми я сталкивался, говорят о принципах проектирования API, а не о подходах к его реализации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...