2015-08-18 17 views
7

'u bağlamak için [FromUri] ve [FromBody] öğelerini eşzamanlı olarak kullanmak için ASP.NET Web Api'mdeki yöntemlere geçirilmesi gereken verileri kapsüllemek için istek ve yanıt modellerini kullanıyorum, [FromUri] ve [FromBody] gerekli.Karmaşık bir Web Api yöntemi parametresi

İstek modelimin özelliklerini doldurmak için hem Uri hem de Body'yı kullanmak istediğim örnekler vardır. Bir kullanıcı, Uri'de UserId'un geçirilmesi gereken bir kullanıcının güncellenmesinde olabilir, ancak güncellenecek veriler gövde içeriğinden geçirilir. Benim arzu uygulama aşağıdaki gibi görünecektir: Ben [FromUri] elde edilecek UserId özelliği istiyoruz

[HttpPut] 
[Route("Update/{UserId}")] 
// PUT: api/Users/Update/[email protected] 
public async Task UpdateUserAsync(UpdateUserRequestModel model) 
{ 
    // Method logic 
} 

, ama geri kalanı:

Modeli:

public class UpdateUserRequestModel 
{ 
    public string UserId { get; set; } 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public string DisplayName { get; set; } 
} 

Api Yöntem[FromBody] elde etmek için, tüm parametreleri tek bir nesnede tutarken. Mümkün mü?

+0

Eğer mümkün bilmiyorum, ama değil, her zaman kendi özel seri hale yazabilir. –

+1

A “HTTPPUT” buna izin verir. Ancak hem “uri” parametresini hem de “body” değerini geçmeniz gerekir. –

+0

@AmitKumarGhosh Bunu desteklemek için sözdizimi nasıl tasarlarım? Tek bir giriş parametresinin özelliklerini farklı kaynaklardan doldurmaya çalıştığımı unutmayın. – miguelarcilla

cevap

0

Değil temiz çözüm ancak çalışması gerekir:

[HttpPut] 
[Route("Update/{UserId}")] 
// PUT: api/Users/Update/[email protected] 
public async Task UpdateUserAsync(UpdateUserRequestModel model, int UserId) 
{ 
    model.UserId = UserId; 
} 
İlgili konular