Как сделать POST с помощью TS?

#angular #typescript #post

#angular #машинопись #Публикация

Вопрос:

я новичок в angular 9. Пытаюсь выполнить post-запрос и получить проблемы с заголовками моего post-запроса — Unnecessarily quoted property 'Authorization' found . Что это значит? Чего он хочет от меня? Как я могу это исправить?

ServiceName.service.ts:

 export class DadataSuggestService {
   url = 'https://cleaner.dadata.ru/api/v1/clean/name';
   token = 'f6bf5c998d0e4fcd58cea3b241763e01fe918127';
   secret = 'c6461196cb75f4f880b07f9bf5fb58b7a715b245';
    query = 'Срегей владимерович иванов';
  constructor(private http: HttpClient) {
  }
  options: {} = {
    method: 'POST',
    mode: 'cors',
    headers: {
      'Content-Type': 'application/json',
      'Authorization': 'Token '   this.token,
      'X-Secret': this.secret
    },
    body: JSON.stringify([query])
  };

  takeSuggestion(URL: string, options: object): any {
    return this.http.post(URL, options)
      .pipe(
        tap(
          data => console.log(data),
          error => console.log(error)
        )
      );
  }
}
  

Ответ №1:

Вам не нужно явно указывать method при post непосредственном вызове функции. Вы могли бы попробовать следующее, чтобы отправить заголовки

 takeSuggestion(URL: string): any {
  const headers = new HttpHeaders({
    'Content-Type': 'application/json',
    'Authorization': 'Token '   this.token,
    'X-Secret': this.secret
  });
  const options = { headers };
  const body = JSON.stringify([query]);

  return this.http.post(URL, body, options).pipe(
    tap(
      data => console.log(data),
      error => console.log(error)
    )
  );
}
  

Ответ №2:

Лучший способ — использовать http-перехватчик, который перехватит ваш http-post и добавит токен к вашему запросу. Если нет, попробуйте что-то вроде приведенного ниже.

 var header = {
  headers: new HttpHeaders()
    .set('Authorization',  `Basic ${AuthService.getToken()}`)
}

this.http.post(url, header)