2016-06-29 5 views
1

のWeb APIは、それが入れを作るために大丈夫だ(私のuserDtoは、彼が訪問したい場所のリストを持っている)私は、ユーザーに場所を追加したいユーザー

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

を場所を追加しますか? (なぜなら、ユーザーのリストに場所を追加して更新する機能を持っているからです)しかし、私のルートはどのように見えるのでしょうか?

[ルート( "{id:guid}/location /")] ??

私はsessionからuserIdを渡しますが、PUTで​​全体の場所を送信するのは問題ありませんか?

+0

私はあなたがAJAXコールから呼び出すと思いますか?場所にIDはありますか?あなたは、{GUID: "GUID_GOES_HERE"、locationId: "LOCATION_ID"}のようなjsonを渡すことができ、AddLocationToUserでは、DTOではなく、場所IDを渡すでしょう –

+0

個人的に、私は 'api/api_project /ユーザー/ GUID/AddLocation/LocationID –

+0

APIルーティング規則については、http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api/odata-routing-conventionsにお問い合わせください –

答えて

1

レコードを追加/作成しているので、HttpPostを使用します。 LocationDtoの場合、[FromBody]を使用します。例えば

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

I二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" 
    } 
}; 

私はdefauを使用lt Apiルーティングでは、URLは "/ api/Location"で、PostLocationToUserはステータスコード204(内容なし)を返します。

関連する問題