Когда я использую Postman для проверки метода POST моего API и переключаюсь в режим отладки, полученный этим методом объект всегда имеет значение null
![enter image description here](https://i.stack.imgur.com/dMufU.png)
Вот код моего 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](https://i.stack.imgur.com/PNUec.png)
Вот файл 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);
}
}