Почему почтовый метод HttpClient никогда не вызывается? - PullRequest
0 голосов
/ 16 июня 2019

Я настраиваю http-запрос к локальному API для хранения новой бутылки вина.Метод get работает нормально, но пост просто ничего не делает.Что-то не хватает в моей просьбе?И почему вы думаете, что вызов метода post хранит молчание?

Мое исследование не помогло, единственная проблема similair, которую я мог найти, это эта , но так и не получила ответа.Определение типа this.httpClient.post<WineBatch> не помогло.

import { Storage } from '@ionic/storage'
import { WineBatch } from '../_models/WineBatch'
import { Injectable } from '@angular/core'
import { HttpClient } from '@angular/common/http'
import { ObservableResult } from '../_models/ObservableResult'

@Injectable()
export class WineBatchProvider {
  private storage: Storage
  private storageKey: string
  private apiUrl: string

  constructor(storage: Storage, private httpClient: HttpClient) {
    this.storage = storage
    this.storageKey = "batches"
    this.apiUrl = 'http://192.168.0.171:8080/api/qns/'
  }

  //#region API

  public refreshWineBatches() {
    this.httpClient.get(this.apiUrl + 'wines').subscribe(result => {
      let observableResult = new ObservableResult(result)
      this.setWineBatches(observableResult.data)
    })
  }

  public addWineBatch(data: any) {
    console.log("Sending data")
    this.httpClient.post(this.apiUrl + 'wines', { data: 'This should cause an error !' }).subscribe(res => {
      console.log("got response !")
    }, error => {
      console.error("error")
    })
    console.log("Data sent !")
  }
  //#endregion
}

Этот код должен как минимум выдавать ошибку.Оба console.log вызываются, но я не получаю ошибки, даже если я жду таймаута.На стороне сервера нет ни ошибок, ни следов в журнале (который регистрирует любой вызов API).Такое ощущение, что this.httpClient.post() просто почему-то игнорируется.

Редактировать

Как спросил Сергей Мелл, вот скриншот вкладка сети (пока не разрешено иметь изображение в моем посте).Запрос xhr немедленно отменяется, и это вызывает столько же ошибок, сколько и исключений.То, как метод вызывается, в данном случае не очень полезно, но этот вопрос , вероятно, таков.

Кажется, что angular игнорирует событие abort.Вот источники в Angular: https://github.com/angular/angular/blob/5.0.1/packages/common/http/src/xhr.ts Возвращаемое Observable уведомляет подписчиков, если запрос отменен.

Но теперь мой вопрос: Почему этот запрос отменяется?

1 Ответ

0 голосов
/ 16 июня 2019

Я думаю, потому что вы, возможно, ничего не отправляете с вашим письменным запросом: попробуйте изменить свой код следующим образом:

public addWineBatch(data: any) {
console.log("Sending data")
this.httpClient.post(this.apiUrl + 'wines', data, { observe: 'response' })).subscribe(res => {
  console.log("got response !")
}, error => {
  console.error("error")
})
console.log("Data sent !")
}
...