Объект пустой метод POST Web API - PullRequest
0 голосов
/ 28 февраля 2019

Когда я использую Postman для проверки метода POST моего API и переключаюсь в режим отладки, полученный этим методом объект всегда имеет значение null

enter image description here

Вот код моего DTO:

public class CharacterDTO
{
        public int Id { get; set; }
        [Required]
        public string FirstName { get; set; }
        public string LastName { get; set; }
}

И, наконец, JSON, который я посылаю почтальону:

{
    "FirstName" : "John",
    "LastName" : "Snow"
}

Если вам это когда-нибудь понадобится, вот запросПочтальон делает:

POST /api/characters HTTP/1.1
Host: localhost:49463
Content-Type: application/json
cache-control: no-cache
Postman-Token: 1e303be2-f318-4104-b189-5142fa6ddad6
{
    "FirstName" : "John",
    "LastName" : "Snow"
}
------WebKitFormBoundary7MA4YWxkTrZu0gW--

И полный скриншот моего запроса Почтальона:

enter image description here

Вот файл WebApiConfig.cs:

public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            // Web API configuration and services

            // Web API routes
            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
        }
    }

И, наконец, вот контроллер:

public class CharactersController : ApiController
    {
        // GET: api/characters
        public IEnumerable<CharacterDTO> GetAllCharacters()
        {
            List<CharacterDTO> list = new List<CharacterDTO>();
            ThronesTournamentManager m = new ThronesTournamentManager();

            foreach (var element in m.GetAllCharacters())
            {
                list.Add(new CharacterDTO(element));
            }
            return list;
        }
        // GET : api/characters/{id}
        public CharacterDTO GetCharacter(int id)
        {
            Character result;
            ThronesTournamentManager m  = new ThronesTournamentManager();
            List<Character> list        = m.GetAllCharacters();

            result = list.SingleOrDefault(c => c.ID == id);

            return new CharacterDTO(result);
        }


        // POST: api/characters
        public HttpResponseMessage Post([FromBody]CharacterDTO character)
        {
            if (!ModelState.IsValid)
            {
                var errors = new List<string>();
                foreach (var state in ModelState)
                {
                    foreach (var error in state.Value.Errors)
                    {
                        errors.Add(error.ErrorMessage);
                    }
                }
                return Request.CreateResponse(HttpStatusCode.Forbidden, errors);
            }


            ThronesTournamentManager m = new ThronesTournamentManager();
            m.AddCharacter(character.Transform());

            return Request.CreateResponse(HttpStatusCode.Created, character);
        }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...