@Saharman

Как получить данные json в контроллере?

Есть вот такой контроллер:
[HttpPost]
        public async Task EditUserRoles([FromBody] string id, List<string> roles)
        {
            int a = 2; // код символический 
            return;
        }

Через postman отправляю данные json. Пример данных:
{
	"id": "2e5ae2ee-0c0c-4f58-4f58-08d638e70a7f",
	"roles": ["abc", "admin", "user", "test"]
}

В отладчике смотрю, что получаю null, вместо своих данных. В чем может быть проблема и как исправить ?
  • Вопрос задан
  • 294 просмотра
Решения вопроса 1
dasha_programmist
@dasha_programmist
ex Software Engineer at Reddit TS/React/GraphQL/Go
тебе нужно создать класс модели
public class MyModel 
{
  public string id {get;set;}
  public List<string> roles {get;set;}
}

и тогда в хэндлере писать вот так:
EditUserRoles([FromBody] MyModel model)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@kttotto
пофиг на чем писать
FromBody может быть только один из параметров метода контроллера. И обычно это сложный тип, нет смысла отмечать им примитивы. Проверьте, есть ли вообще параметр в теле запроса: поставьте брейк поинт на самое начало метода и провалитесь в this.Request.Body, посмотрите чьи там параметры. Я предполагаю, что там в лучшем случае будет List. Попробуйте так (string id, [FromBody] List roles). Если так не сработает, то тогда нужно сделать так, как сказала Даша Циклаури.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы