【问题标题】:What is the correct way of sending HTTP POST with Postman?用 Postman 发送 HTTP POST 的正确方法是什么?
【发布时间】:2018-01-12 07:01:29
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    这会导致您的端点需要一个 Person 对象,如下面的代码块所示,但您传递的是一个 JSON 数组,上面写着 [{"Id":"3","FirstName":"Homer","LastName":"Simpson"}]。您应该只传递一个 JSON 对象 {"Id":"3","FirstName":"Homer","LastName":"Simpson"} 否则反序列化将失败并且参数绑定将不起作用

    public IHttpActionResult Put(Person person)
    {
    

    **旁注:您的端点实际上是一个PUT 请求,那么您为什么要发出POST?它应该是 PUT 除非您的客户不理解 PUT 而 POSTMAN 不是这种情况

    【讨论】:

    • 谢谢!我现在明白了,这在链接的教程中并不明显。请原谅我缺乏知识;-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-08
    • 2019-12-03
    • 2017-10-21
    • 1970-01-01
    • 2022-07-23
    • 2016-07-03
    • 2010-10-04
    相关资源
    最近更新 更多