POST-запрос завершается с ошибкой из-за отсутствия требуемого тела Aqueduct PostgreSQL

#dart #post #aqueduct

#dart #Публикация #aqueduct

Вопрос:

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

 {
    "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
}
 

Можете ли вы определить, почему отсутствует тело?
Большое спасибо.

Ответ №1:

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

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