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中发送整个位置??
因为它是添加/创建一个记录,你想使用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(没有内容)。