C# Web Api向用户添加位置
我想向用户添加一个位置(My userDto有一个他想访问的位置列表) 可以投一票吗?(因为我有一个功能,只需在用户列表中添加一个位置,然后我就想进行更新)但我的路线应该是什么样的 它可以[路由(“{id:guid}/location/”)吗C# Web Api向用户添加位置,c#,asp.net,asp.net-mvc,rest,asp.net-web-api,C#,Asp.net,Asp.net Mvc,Rest,Asp.net Web Api,我想向用户添加一个位置(My userDto有一个他想访问的位置列表) 可以投一票吗?(因为我有一个功能,只需在用户列表中添加一个位置,然后我就想进行更新)但我的路线应该是什么样的 它可以[路由(“{id:guid}/location/”)吗 我从会话中传递用户ID,但可以将整个位置发送到PUT 由于它正在添加/创建记录,您需要使用HttpPost。对于LocationDto,您需要使用[FromBody] 比如说, [HttpPost] [Route("{id:guid}/location")
我从会话中传递用户ID,但可以将整个位置发送到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的建议。如果您使用的是WebAPI2,那么下面是另一种选择 控制器:
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; }
}
var input = {
UserId: "11111111-1111-1111-1111-111111111111",
Location: {
Latitude: "anotherLatitude",
Longitude: "anotherLongitude"
}
};
查看模型:
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; }
}
var input = {
UserId: "11111111-1111-1111-1111-111111111111",
Location: {
Latitude: "anotherLatitude",
Longitude: "anotherLongitude"
}
};
JSON:
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; }
}
var input = {
UserId: "11111111-1111-1111-1111-111111111111",
Location: {
Latitude: "anotherLatitude",
Longitude: "anotherLongitude"
}
};
我使用了默认的Web Api路由,url是“/Api/Location”,PostLocationToUser返回的状态代码是204(无内容)。我假设您将通过AJAX调用调用它,对吗?该位置是否有ID?您可以传递一个json,比如{guid:“guid_GOES_HERE”,locationId:“LOCATION_ID”},在AddLocationToUser上,您传递的是位置ID,而不是数据。对于api路由约定,我的路由方式是:'api/api_project/Users/guid/AddLocation/locationidpreferto'