Angular6 HttpClient Post метод не работает, хотя почтальон успешно? - PullRequest
0 голосов
/ 04 октября 2018

Код моего постметода ниже:

  postMetadata(titleParam, rankParam) {

    let headers = new HttpHeaders();
    headers = headers.append(
      "Authorization",
      "Bearer " + this.adalService.userInfo.token
    );

    headers = headers.append(
      "Content-Type",
      "application/x-www-form-urlencoded"
    );

    const params = new HttpParams()
    .append("title", titleParam)
    .append("rank", rankParam)
    .append("createdBy", "Test");

    console.log(params, headers);
    return this.http.post(this.ROOT_URL + "bms/metadata", {
      "title": titleParam,
      "rank": rankParam,
      "createdBy": "Test"
    }, { headers })

}

Я также пытался поместить {params} и просто использовать этот объект HttpParams, тот же результат.Я также пытался размещать их один за другим {params, headers}, и в этом случае я получаю «несанкционированный», что, я уверен, так, потому что он не может разобрать все правильно и токен перепутывается.

С почтальоном я скопировал и вставил токен из консоли, чтобы можно было сделать запрос, и все работает хорошо, все добавлено в базу данных.

Точная ошибка для запросана бэкэнде в случае Angular это:

Error updating the dataabase  { RequestError: Invalid column name 'undefined'.

И если я попытаюсь войти в консоль с req.query.title и так далее, все, что я получаю, это везде «неопределено».

Бэкэнд по сути экспресс + mssql (tedious.js) + passport-azure-ad.

1 Ответ

0 голосов
/ 04 октября 2018

Я застрял на этом в течение нескольких часов и снова решил в течение нескольких минут после размещения в стеке.

Мне пришлось установить следующее:

  "Content-Type",
  "application/json"

по какой-то странной причинеЯ получаю ошибку в консоли, хотя?Будем расследовать дальше.Ошибка: enter image description here

РЕДАКТИРОВАТЬ: Исправлено, вот полный окончательный рабочий код запроса на обслуживание HttpClient:

  postMetadata(titleParam, rankParam) {

    let headers = new HttpHeaders();
    headers = headers.append(
      "Authorization",
      "Bearer " + this.adalService.userInfo.token
    );

    headers = headers.append(
      "Content-Type",
      "application/json"
    );


    let body = { "title": titleParam, "rank": rankParam, "createdBy": "TestingCreation" }
    const data = JSON.stringify(body);

    return this.http.post(this.ROOT_URL + "bms/metadata",   data , { headers, responseType: 'text' })

}
...