【发布时间】:2016-04-28 18:33:24
【问题描述】:
我在 Web API 中有一个方法,我使用对象作为输入,但是当我尝试使用 URI 运行 API 时,对象内的字段为 Null。
这是我的方法:
[HttpGet]
[Route("AddUser/{user}")]
public async Task<string> CreateUser([FromUri]AddUser user)
{
//LoansApiTrace.Trace.Verbose(EventId.Start, () => string.Format("{0}: {1}", "AddUser", user.));
string Exception = await Repository.AddUserAsync(user);
return Exception;
}
这是 AddUser 对象:
public class AddUser
{
public string UserEmailAddress { get; set; }
public string PasswordHash { get; set; }
public string Salt { get; set; }
public string RemoteRefNumber { get; set; }
}
这是 URI:
http://localhost:59509/Adduser/user=test@yahoo.com,pass,salt,remref/
它转到方法,但 UserEmailAddress , PasswordHash ,..所有 4 都是空的。
【问题讨论】:
-
为什么要将对象放在 Uri 而不是 body 中?
-
@RyanGates 在
GET? -
@KennethK。我认为
CreateUser根本不应该是GET。我认为这将是POST。我看的不够仔细。现在我做到了,这让我觉得很奇怪。 -
切勿将 GET 用于具有副作用的操作。 GET 应始终为 idempotent and safe。
-
我同意@FedericoDipuma。对于创作,我会使用 POST。
标签: c# asp.net-web-api