#json #asp.net-web-api
#json #asp.net-web-api
Вопрос:
Я пытаюсь выполнить post-запрос, который завершается неудачей всякий раз, когда я добавляю второй параметр в функцию.
Это, например, работает со следующей функцией:
public class Mock
{
public String MyFirstValue { get; set; }
public String MySecondValue { get; set; }
}
[HttpPost]
public ResponseDataDTO TestPost(Mock test)
{
var response = new ResponseDataDTO();
return response;
}
Со следующим запросом тела:
{
"MyFirstValue": "testvalue",
"MySecondValue": "testvalue" }
}
Однако, когда я добавляю другой параметр в эту функцию, он больше не работает, потому что я не совсем уверен в том, как создать json:
[HttpPost]
public ResponseDataDTO TestPost(Mock test, Mock test2)
{
var response = new ResponseDataDTO();
return response;
}
Мое лучшее предположение о теле:
{
"test": {
"MyFirstValue": "testvalue",
"MySecondValue": "testvalue"
}
"test2": {
"MyFirstValue": "testvalue2",
"MySecondValue": "testvalue2"
}
}
Раньше у меня не было таких проблем, потому что у меня обычно есть только один параметр объекта, который принимает все.
Еще одна странная вещь, с которой я не могу работать, — это метод только с целочисленным параметром:
[HttpPost]
public ResponseDataDTO TestPostInteger(int test)
{
var response = new ResponseDataDTO();
return response;
}
С телом:
{
"test" : 1
}
Это дает мне 404, он даже не найдет метод. Если вместо этого я помещаю параметр в URL, он работает.
Ответ №1:
Тело ответа может привязываться только к одному объекту.
Сказав это, одним из решений было бы TestPost
использовать массив Mock
. Вот так:
[HttpPost]
public ResponseDataDTO TestPost(Mock[] tests)
{ ... }
Json:
[
{
"MyFirstValue": "testvalue",
"MySecondValue": "testvalue"
},
{
"MyFirstValue": "testvalue2",
"MySecondValue": "testvalue2"
}
]
Комментарии:
1. Спасибо, я не знал, что он может привязываться только к одному объекту.