Web Api向用户添加位置

时间:2016-06-29 18:45:04

标签: c# asp.net asp.net-mvc rest asp.net-web-api

我想为用户添加一个位置(我的用户有一个他想要访问的位置列表)

[HttpPut]
         [Route("{id:guid}/location/")]
        public IHttpActionResult AddLocationToUser(Guid idUser , LocationDto location)
        {
            _userLogic.AddLocationToUser(idUser, location);
            return Ok();
        }
可以投球吗? (因为我有一个函数只是在用户列表中添加一个位置然后我想更新)但是我的路线应该是什么样的???

没关系[路线(" {id:guid} / location /")] ??

我从会话传递userId,但是可以在PUT中发送整个位置吗?

2 个答案:

答案 0 :(得分:1)

由于它正在添加/创建记录,因此您需要使用 HttpPost 。对于LocationDto,您想使用 [FromBody]

例如,

[HttpPost]
[Route("{id:guid}/location")]
public IHttpActionResult AddLocationToUser(Guid id, [FromBody] LocationDto location)
{
   _userLogic.AddLocationToUser(id, location);
   return Ok();
}

答案 1 :(得分:0)

我的第二个@Win建议使用HttpPost。如果您使用的是Web Api 2,则以下是另一种选择。

<强>控制器:

awscli

查看型号:

public class LocationController : ApiController
{
    UserLogic _userLogic;
    public LocationController()
    {
        _userLogic = new UserLogic();
    }
    public void PostLocationToUser(LocationViewModel locationViewModel)
    {
        _userLogic.AddLocationToUser(locationViewModel.UserId, locationViewModel.Location);
    }
}

<强> JSON:

public class LocationViewModel
{
    public Guid UserId { get; set; }
    public Location Location { get; set; }
}

public class Location
{
    public string Latitude { get; set; }
    public string Longitude { get; set; }
}

我使用默认的Web Api路由,url是“/ api / Location”,PostLocationToUser返回状态代码204(无内容)。