Używam modeli żądania i odpowiedzi do enkapsulacji danych, które należy przekazać do metod w moim ASP.NET Web Api, przy użyciu [FromUri]
i [FromBody]
, gdy niezbędny.Używanie [FromUri] i [FromBody] jednocześnie do wiązania złożonego parametru metody Api WWW
Są jednak przypadki, w których chciałbym użyć zarówno Uri, jak i Body, aby zapełnić właściwości mojego modelu żądania. Przykładem może być aktualizacja użytkownika, gdzie UserId
powinien zostać przekazany w Uri, ale dane do aktualizacji zostaną przekazane w treści treści. Moje życzenia realizacja będzie wyglądać mniej więcej tak:
model:
public class UpdateUserRequestModel
{
public string UserId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string DisplayName { get; set; }
}
Api Metoda:
[HttpPut]
[Route("Update/{UserId}")]
// PUT: api/Users/Update/[email protected]
public async Task UpdateUserAsync(UpdateUserRequestModel model)
{
// Method logic
}
Chciałbym właściwość UserId
być uzyskany [FromUri]
, ale reszta do uzyskania [FromBody]
, wszystkie zachowując wszystkie parametry w jednym obiekcie. czy to możliwe?
Nie wiem, czy to możliwe, ale jeśli nie, zawsze można napisać swój własny serializatora. –
Umożliwia to 'HTTPPUT'. Należy jednak przekazać zarówno parametr" uri ", jak i" treść ". –
@AmitKumarGhosh Jak jednak zaprojektować moją składnię, aby to wspierać? Należy pamiętać, że próbuję wypełnić właściwości jednego parametru wejściowego z różnych źródeł. – miguelarcilla