如何通过Restful API传递object(json)的一部分

舒伟

现在,我有一个用户对象,该对象具有三个必需的属性:{FirstName,LastName,CreatedTime}。

现在,我开发了一个API以创建用户。我想使用POST / api / users。

我应该传递Jason数据,其中包含我要发布的数据。

如果我传入{FirstName = abc,LastName = abc,CreatedTime = sometime},它可以工作,但是如果我错过任何属性,例如仅传入{firstname = abc},它将抛出异常。

我在下面粘贴了我的方法。

    [Route("api/users")]
    public User CreateUser(User user)
    {
        if (!ModelState.IsValid)
            throw  new HttpResponseException(HttpStatusCode.BadRequest);

        user.FirstName = String.IsNullOrEmpty(user.FirstName) ? "Undefined" : user.FirstName;
        user.LastName = String.IsNullOrEmpty(user.LastName) ? "Undefined" : user.LastName;
        user.UserName = String.IsNullOrEmpty(user.UserName) ? "Undefined" : user.UserName;
        user.ModifiedAt = DateTime.Now;
        user.CreatedAt = DateTime.Now;
        _context.Users.Add(user);
        _context.SaveChanges();

        return user;
    }

我的问题是:有什么方法可以传递用户的部分属性?例如{firstname = abc}。

此技术也可以用作PUT(更新用户方法)。

提前致谢。

尔绍

1)在插入记录时,只需将您CreatedAtModifiedAt属性标记[JsonIgnore]属性

[Required] 
[JsonIgnore] 
public DateTime CreatedAt { get; set; } 

[Required] 
[JsonIgnore] 
public DateTime ModifiedAt { get; set; } 

2)当您尝试获取数据时,您的api方法将是

[HttpGet]
[Route("ById/{id=id}")]
public IHttpActionResult GetUser(int? id)
{
    if (id == null)
        return NotFound();

    User user = _context.Users.SingleOrDefault(c => c.UserId == id.Value);

    if (user == null)
        return BadRequest("User not exist in our database");

    var returnedData = new { FirstName = user.FirstName, LastName = user.LastName, UserName = user.UserName, CreatedAt = DateTime.Now, ModifiedAt = DateTime.Now };
    return Ok(returnedData);
}

我们只是使用returnAnonymous Type来定制可返回数据。

尝试一次可能对您有帮助

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章