Вы можете передать столько параметров, сколько хотите в строке запроса HTTP-GET. Просто нужно добавить шаблон маршрута на сервер.
var server = new HttpSelfHostServer();
server.Routes.MapHttpRoute("DnsQuery", "api/{controller}/dnsserver={DnsServer}&domain={domainName}");
Значения, переданные для dnsserver и domain, теперь будут сопоставлены с параметрами вашего метода GET.
Edit:
Кроме того, вы также можете передавать сложные объекты в теле HTTP POST. Вы можете выбрать один из трех собственных форматов: JSON, XML или UrlEncoded Query String. MVC4 знает, как сопоставить эти форматы данных с простыми переменными, такими как строки (просто убедитесь, что имена элементов XML имеют то же имя, что и параметр, с которым вы хотите их сопоставить. Также клиент, отправляющий запрос, должен убедиться, что тип содержимого установить правильное значение (Application / JSON, Text / XML, application / x-www-form-urlencoded).
<DnsInfo>
<DnsServer>0.0.0.0</DnsServer>
<Domain>YourDomain.com</Domain>
</DnsInfo>
Вы также можете создать сложный тип, и он будет удален в него
void Post(DnsInfo info) : ApiController
{
}
public class DnsInfo
{
public string DnsServer { get; set; }
public string Domain { get; set; }
}
Преимущества этого метода в том, что он поможет, если у вас слишком много параметров, вместо этого будет лучше организовать их в классы. Кроме того, если вы передаете какую-либо конфиденциальную информацию, вы не хотите использовать строки запроса в URL-адресе, поскольку они могут кэшироваться браузерами и т. Д.