Здравствуйте, я пытаюсь использовать метод HttpClient.GetAsyn c для получения некоторой информации из моего веб-API. Я не знаю, как структурировать параметры запроса для GET-запроса, когда нужно передать список сложных объектов. Я не обязательно привязан к использованию параметров запроса, я не уверен, будет ли это хорошим случаем, чтобы просто сделать его POST и передать данные в теле? В целом я просто ищу либо лучший способ сделать это, либо несколько рекомендаций о том, как действовать.
WEB API:
Это мой код WEB API, так как вы можете видеть, что я передаю список VariantDTO и 2 простых параметра
[HttpGet]
[ResponseType(typeof(List<SchematicDTO>))]
[Route("api/schematic/GetSchematicsForMacroVariants")]
public HttpResponseMessage GetSchematicsForMacroVariants([FromUri]List<VariantDTO> dto, bool IncludeEngineered, bool IncludeStandard)
{
}
VariantDTO
Вот как выглядит мой DTO.
public class VariantDTO
{
public string Id { get; set; }
public string Variant { get; set; }
}
MVC Контроллер
В моем MVC контроллере я пытаюсь вызвать WEB API. Я только начал использовать веб-api asp. net в первый раз, и я немного не понимаю, как go передавать эти данные?
public JsonResult GetSchematicsForSelectedVariants(List<VariantViewModel> ListOfVariants,bool GetEngineered, bool GetStandard)
{
List<SchematicViewModel> vms = new List<SchematicViewModel>(); //List of schematic vm we want to return
//Create DTO from View Model
List<VariantDTO> Dto = ListOfVariants.Select(x => new VariantDTO
{
Id = x.Id,
Variant = x.Variant
}).ToList();
using (var client = new HttpClient())
{
//---NOT SURE HOW TO PASS MY DTO and GetEngineered and GetStandard parameters????
var responseTask = client.GetAsync(ServerName + "/api/schematic/GetSchematicsForMacroVariants/");
responseTask.Wait();
var result = responseTask.Result;
if (result.IsSuccessStatusCode)
{
var readTask = result.Content.ReadAsStringAsync().Result;
//Deserialize object
var deserialized = JsonConvert.DeserializeObject<List<SchematicDTO>>(readTask);
vms = deserialized.Select(x => new SchematicViewModel
{
FullPath = x.FullPath,
Id = x.Id
}).ToList();
}
}
return Json(vms, JsonRequestBehavior.AllowGet);
}
Любые указания или предложения было бы fantasti c, так как я немного потерялся.
Спасибо!