API post call возвращает ошибку, но работает на почтальоне - PullRequest
1 голос
/ 08 мая 2019

У меня есть рабочий угловой проект, который подключается к реальным данным с помощью webapi2. В настоящее время я работаю над проектом express.js, который макетирует данные для демонстрационных целей, поэтому вместо использования реального webapi2 я буду использовать этот экспресс-проект, который всегда показывает случайные данные. Угловой проект вызывает post api, который ожидает объект json. Но вызов всегда возвращает ошибку. но когда вызывается с помощью почтальона, это работает.

код:

угловой компонент

onSubmit(valid: boolean = false): void {
...
this.service.save(request).subscribe(
  result => {
    console.log(result,"RHAILHYDRA");
    ...
  },
  error => {
    console.log(error,"EHAILHYDRA");
    ...
  })
}

угловой сервис.ц

public save(param: any): Observable < any > {
    let uri = "some url";
    let payLoad = {
        "someId": param.id,
        "someComment": param.comment
    };
    let headers = new HttpHeaders({
        'If-None-Match': param.tag
    });
    return this.http.post <any> (uri, payLoad, {
        headers: headers
    });
}

Ури всегда http://localhost:44309/demo/5b42/trade?valid=false

, так как это издевательство, я не рассматривал запросы. поэтому вызов API будет работать с запросами или без них.

код express.js

var bodyParser = require('body-parser');
exports.register = function (app) {
  app.use(bodyParser.json());
  app.use(bodyParser.urlencoded({ extended: true }));
  app.post('/demo/:id/trade', function (req, res) {
    res.status(200).json({
      "validationMessages": [],
      "overridable": true
    });
  });
};

Когда я нажимаю кнопку отправки, всегда происходит ошибка «EHAILHYDRA».

enter image description here

но когда я пользуюсь почтальоном, я получаю ожидаемый результат.

enter image description here

Любое руководство было бы очень полезно.

ОБНОВЛЕНИЕ № 1:

Когда я нажимаю на кнопку «Отправить», для этой службы нет вызова в сети:

Ответы [ 2 ]

1 голос
/ 08 мая 2019

Возможно, эта проблема возникает, когда значение вашего заголовка равно нулю или не определено.поэтому удалите заголовок, я имею в виду 'If-None-Match': param.tag part и попробуйте снова.


public save(param: any): Observable < any > {
    let uri = "some url";
    let payLoad = {
        "someId": param.id,
        "someComment": param.comment
    };
   let httpOptions = {
      headers: new HttpHeaders({ 'Content-Type': 'application/json' })
    };
    return this.http.post <any> (uri, payLoad, httpOptions);
}
0 голосов
/ 08 мая 2019

Попробуйте добавить check к validationMessages, независимо от того, имеет ли оно какое-либо значение.

Не используйте validationMessages напрямую.

Может быть случай, когда validationMessages не определено, и вы используете эту переменную для вызова некоторых предопределенных функций массива.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...