Маршрутизация атрибутов для POST в C # .NET - PullRequest
0 голосов
/ 05 сентября 2018

Следующие дают мне args=null, когда я POST с телом {"args": 222}. Как я могу получить член тела в моей переменной args (или все тело в переменную body)

[HttpPost("{className}/{methodName}")]
public ActionResult<string> Post(string className, string methodName, string args){}

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

JSON

{"args": 222}

означает, что args - это число.

Создание модели для хранения ожидаемых данных

public class Data {
    public int args { get; set; }
}

Обновить действие, чтобы явно ожидать данные из тела запроса

[HttpPost("{className}/{methodName}")]
public ActionResult<string> Post(string className, string methodName, [FromBody] Data body) {
    if(ModelState.IsValid) {
        int args = body.args
        //...
    }
    return BadRequest(ModelState);
}
0 голосов
/ 05 сентября 2018

Если вы хотите использовать маршрутизацию атрибутов, вы должны включить маршрутизацию атрибутов в WebAPIConfig. Также есть [Route ()] для каждого действия PUT, GET, POST и т. Д.

Я вижу, что вы делаете обычную маршрутизацию.

Для получения дополнительной информации о маршрутизации атрибутов, я предлагаю вам пройти через это https://docs.microsoft.com/en-us/aspnet/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2

...