使用Postman发送HTTP POST的正确方法是什么?

时间:2017-08-04 11:00:43

标签: c# http post asp.net-web-api postman

我正在尝试通过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。

1 个答案:

答案 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不同的情况