POST-запрос не выполняется из-за отсутствия необходимого Body Aqueduct + PostgreSQL

Я создаю свой первый API с помощью Aqueduct и базы данных PostgreSQL. Чтобы проверить свою конечную точку, я использую Postman на локальном сервере. Запросы GET работают должным образом, но запрос POST завершается неудачно с отсутствующей ошибкой тела:

{
    "error": "missing required Body ''"
}

это метод:

@Operation.post()
  Future<Response> addAlert(@Bind.body(ignore: ['id']) Alert newAlert) async {
    print('incoming alert to save is $newAlert');

    final query = Query<Alert>(context)
    ..values = newAlert;
    final alert = await query.insert();

    // return Response.ok(alert);
    return alert != null
    ? Response.ok(alert)
    : Response.badRequest();
  }

и это Модель:

class Alert extends ManagedObject<_Alert> implements _Alert{}

class _Alert {
  @primaryKey
  int id;
  @Column(unique: false)
  String name;
  @Column(unique: false,nullable: true, indexed: true)
  String city;
  @Column(unique: false,nullable:  true, indexed: true)
  String region;
  @Column(unique: false,nullable: true, indexed: true)
  String country;
  @Column(unique: false, nullable: true, indexed: true)
  int date;
  @Column(unique: false, nullable: true, indexed: true)
  String description;
  @Column(unique: false, nullable: true, indexed: true)
  String alertIcon;
  @Column(unique: false, nullable: true, indexed: true)
  String latitude;
  @Column(unique: false, nullable: true, indexed: true)
  String longitude;
  @Column(unique: false, nullable: true, indexed: true)
  String alertImageName;
  @Column(unique: false, nullable: true, indexed: true)
  String alertImageUrl;
  @Column(unique: false, nullable: true, indexed: true)
  String userName;
  @Column(unique: false, nullable: true, indexed: true)
  int utilityPoints;
  @Column(unique: false, nullable: true, indexed: true)
  int votesToDelete;
}

В Postman я установил хост как localhost:8888/alerts, как для запросов Get, выбрал заголовок Content-Type application/json и тело raw JSON, которое:

{
    "name":"postman",
    "city":"Bologna",
    "region":"Emilia-Romagna",
    "country":"Italy",
    "date":1111111,
    "description":"test",
    "alertIcon":"test",
    "latitude":"11.111",
    "longitude":"22.222",
    "alertImageName":"test",
    "alertImageUrl":"jjj",
    "userName":"user",
    "utilityPoints":1,
    "votesToDelete":1
}

Вы можете понять, почему отсутствует тело? Большое спасибо.


person Vincenzo    schedule 03.01.2021    source источник


Ответы (1)


Наконец, это была проблема с настройкой заголовков Postman. Я включил только Content-Type application / json и по ошибке отключил остальные. Они тоже должны были быть активными, и теперь все работает, как ожидалось. Надеюсь, это поможет другим. Ваше здоровье.

введите описание изображения здесь

person Vincenzo    schedule 03.01.2021