我正在尝试通过Postman向localhost上的测试页发送POST请求,但是我收到了奇怪的错误。
我按照这个例子,第1部分和第2部分: http://www.daniellewis.me.uk/2014/02/22/asp-net-web-api-from-scratch-part-2/
在Postman中,我尝试向
发送POST请求http://localhost:57472/person
请求是JSON,这是我发送的对象:
[{"Id":"3","FirstName":"Homer","LastName":"Simpson"}]
我也试过这个:
[{"FirstName":"Homer","LastName":"Simpson"}]
我总是在这个函数中出错:
public IHttpActionResult Post(Person person)
{
var nextId = people.Count + 1;
person.Id = nextId;
people.Add(person);
return CreatedAtRoute("Default", new { id = nextId }, person);
}
差错消息: 它是:
System.ArgumentOutOfRangeException: "Der Index lag außerhalb des Bereichs. Er
darf nicht negativ und kleiner als die Auflistung sein." => "Index out of
range - must not be negative or lower..."
或:
System.NullReferenceException: "Der Objektverweis wurde nicht auf eine
Objektinstanz festgelegt."
我做错了什么?它应该将这个新人添加到列表中,但它不起作用。
编辑: 解: 我错误地将对象作为数组发送..它应该是:
{"FirstName":"Homer","LastName":"Simpson"}
感谢您的帮助!
〜 S.B。
答案 0 :(得分:2)
那么这会导致你的端点需要一个[{"Id":"3","FirstName":"Homer","LastName":"Simpson"}]
对象,如下面的代码块所示,但是你传递的是一个JSON数组{"Id":"3","FirstName":"Homer","LastName":"Simpson"}
。您应该只传递一个JSON对象public IHttpActionResult Put(Person person)
{
,否则反序列化将失败并且参数绑定将不起作用
PUT
** SideNote:您的端点实际上是POST
请求,那么您为什么要制作PUT
?它应该是PUT
,除非您的客户不理解{{1}}与POSTMAN不同的情况