我有以下地址:
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#代码做错了什么,但我无法完全确定是哪一个。抱歉,我有点新:)
答案 0 :(得分:4)
这里至少存在三个问题:
您无法通过导航到URL来调用POST方法,因为该方法执行GET。您需要像Postman这样的工具来进行此测试。
[FromBody]
意味着数据将作为请求主体的一部分出现,因此即使可以处理请求,数据也将被忽略(如第1点所述) 。但是请注意,由于您使用的是ASP.NET Core 2.1,因此实际上不需要使用[FromBody]
,因为它是默认的as explained here。
您说要创建REST API。 /AddNew
不遵循REST。
您的方法应为:
[HttpPost]
public ActionResult<User> Post([FromBody] User newUser)
然后您的URL将是:
localhost:somePort/api/users