Web Api为用户添加位置

本文关键字:添加 位置 用户 Api Web | 更新日期: 2023-09-27 17:53:35

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

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

它是可以做一个放?(因为我有一个函数谁只是在用户列表中添加一个位置,然后我想更新),但我的路由应该怎么看??

ok [Route("{id:guid}/location/")] ??

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

Web Api为用户添加位置

因为它是添加/创建一个记录,你想使用HttpPost。对于LocationDto,您需要使用[FromBody]

例如

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

我同意@Win使用HttpPost的建议。如果您使用的是Web Api 2,那么下面是另一种选择。

控制器:

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

视图模型:

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; }
}
JSON:

var input = {
    UserId: "11111111-1111-1111-1111-111111111111",
    Location: {
        Latitude: "anotherLatitude",
        Longitude: "anotherLongitude"
    }
};

我使用默认的Web Api路由,url是"/Api/Location",PostLocationToUser返回的状态码是204(没有内容)。