POST请求不会从本地主机执行

时间:2018-07-27 00:35:05

标签: c# asp.net-core

我有以下地址:

api/users/AddNew/<object here>

所以,我做了这样的测试:

api/users/AddNew/{"Id":0,"NameFirst":"NewUser","NameLast":"NewUserLast","DateOfBirth":"2018/07/27"}

但是我得到的只是一个“找不到此本地主机页面”。在Visual Studio中进行调试我应该在代码应该触发时设置断点,但是它永远不会到达调试点。下面的代码:

[HttpPost(Name = "AddNew")]
[Route("AddNew/{jsonUser}")]
public ActionResult<User> Post([FromBody] User newUser)
{
    if (newUser != null) // Debug Point here never triggers
    {
        return Facade.AddNewUser(newUser);
    }
    else
    {
        return new User() { Id = 0, NameFirst = ErrorCodeUtility.GetEnumName(ErrorCodes.API_INVALID_POST_OBJECT) };
    }
}

用户模型:

public class User
{
    public uint Id;
    public String NameFirst;
    public String NameLast;
    public DateTime DateOfBirth;
}

因此,我假设我的请求或C#代码做错了什么,但我无法完全确定是哪一个。抱歉,我有点新:)

1 个答案:

答案 0 :(得分:4)

这里至少存在三个问题:

  1. 您无法通过导航到URL来调用POST方法,因为该方法执行GET。您需要像Postman这样的工具来进行此测试。

  2. [FromBody]意味着数据将作为请求主体的一部分出现,因此即使可以处理请求,数据也将被忽略(如第1点所述) 。但是请注意,由于您使用的是ASP.NET Core 2.1,因此实际上不需要使用[FromBody],因为它是默认的as explained here

  3. 您说要创建REST API。 /AddNew不遵循REST。

    您的方法应为:

    [HttpPost]
    public ActionResult<User> Post([FromBody] User newUser)
    

    然后您的URL将是:

    localhost:somePort/api/users