Передача Params в URL с помощью метода post httpClient - PullRequest
2 голосов
/ 07 мая 2019

Мне нужно отправить письмо в URL в качестве параметра http.Я попробовал то же самое, используя почтальон, и код работает нормально, но с помощью следующего кода angular он не добавляет параметр email к URL.Я использую угловой 7 в качестве внешнего интерфейса.

http://localhost:8090/api/auth/forgot?email=abcd@gmail.com

При отправке почты используется адрес электронной почты abcd@gmail.com и вышеупомянутый URL.

Ниже приведен код внешнего интерфейса

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { PasswordInfo } from './password-info';

@Injectable({
  providedIn: 'root'
})
export class ResetPswdEmailService {

  constructor(private http: HttpClient) { }

  sendemail( emailinfo : String){//emailinfo is the email address
    let data = {email: emailinfo};
    return this.http.post<any>('http://localhost:8090/api/auth/forgot', {params:data});
  }


}

составляющая часть кода

import { Component, OnInit } from '@angular/core';
import { ResetPswdEmailService } from '../Service/reset-pswd-email.service';

@Component({
  selector: 'app-forgotpassword',
  templateUrl: './forgotpassword.component.html',
  styleUrls: ['./forgotpassword.component.css']
})
export class ForgotpasswordComponent implements OnInit {

  constructor(private resetpswdemailservice : ResetPswdEmailService) { }

  mail : string;

  ngOnInit() {
  }

  onSubmit() {
    this.resetpswdemailservice.sendemail(this.mail)
    .subscribe(result =>{
    console.log(result);
    });
  }

}

Ошибка в консоли

http://localhost:8090/api/auth/forgot 400


HttpErrorResponse {headers: HttpHeaders, status: 400, statusText: "OK", url: "http://localhost:8090/api/auth/forgot", ok: false, …}
error: {timestamp: "2019-05-07T10:53:58.230+0000", status: 400, error: "Bad Request", message: "Required String parameter 'email' is not present", path: "/api/auth/forgot"}
headers: HttpHeaders {normalizedNames: Map(0), lazyUpdate: null, lazyInit: ƒ}
message: "Http failure response for http://localhost:8090/api/auth/forgot: 400 OK"
name: "HttpErrorResponse"
ok: false
status: 400
statusText: "OK"
url: "http://localhost:8090/api/auth/forgot"

Похоже, что параметры не были добавлены в URL.

Я отправил письмо в теле http, и оно отлично работает. Письмо доставлено.Так что проблема здесь в настройке параметров.

Заранее спасибо.

Ответы [ 3 ]

0 голосов
/ 07 мая 2019

Если ваш запрос опубликован. Просто измените это так:

return this.http.post<any>(`http://localhost:8090/api/auth/forgot`, {email: emailinfo});
0 голосов
/ 08 мая 2019

Я думаю, что вы хотите отправить электронное письмо как параметр запроса, а не как тело запроса, поэтому вы должны сделать это:

sendemail( emailinfo : String){//emailinfo is the email address
   let data = {email: emailinfo};
   return this.http.post<any>('http://localhost:8090/api/auth/forgot', null, {params:data});
}

В противном случае, если это именно то, что вам нужно, вы должны знать, что это не правильный способ использования метода POST, потому что пост-данные означают использование тела, поэтому вы используете метод GET.

0 голосов
/ 07 мая 2019

Вы можете попробовать это вместо:

let params = new HttpParams();
params = Params.append('email', emailInfo);

return this.http.post<any>(`http://localhost:8090/api/auth/forgot`, { params: params });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...