@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, вместо своих данных. В чем может быть проблема и как исправить ?
  • Вопрос задан
  • 313 просмотров
Решения вопроса 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). Если так не сработает, то тогда нужно сделать так, как сказала Даша Циклаури.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы