[英]How to pass query params in url in a HTTP post request in Angular
[英]how to send the params in http post request in angular service ( angular 2)
我的要求:
我正在开发一个简单的密码重置功能。 它有两个部分来验证用户(电子邮件ID和加入日期)和忘记密码(新密码,确认密码)。 如果是有效用户,则系统应携带数据并转到下一页忘记密码,一旦用户输入新通行证并确认通行证,则在单击“提交”后应重新设置通行证。
问题:
我能够在组件之间注入数据,但不确定如何将数据(电子邮件ID和Date)作为查询字符串参数传递给forgotpass.service.ts文件中的http post请求,该文件将调用我的后端以执行密码重置操作。
任何帮助对此表示感谢。
程式码片段:
忘记了password.service.ts
import { Injectable } from '@angular/core';
import {Http,Headers,Response,RequestOptions} from '@angular/http';
import {Observable} from 'rxjs/Observable';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/catch';
import 'rxjs/add/observable/throw'
@Injectable()
export class ForgotpasswordService {
constructor(private http:Http) { }
forgotpassword(forgot)
{
// public url = http://localhost:90/forgotpassword/
var headers= new Headers();
headers.append('content-Type','application/json');
headers.append('Accept', 'application/json');
console.log("Connecting to Node js to change password");
return this.http.post("http://localhost:90/forgotpassword/?email_id=test@gmail.com&date_id=03/30/2007",JSON.stringify(forgot),{headers:headers})
.map(res => res.json());
}
}
忘记密码
constructor(private forgotpasswordservice:ForgotpasswordService,private router: Router,public dialog:MdDialog) { }
ngOnInit() {
this.forgot= '/?email_id='+this.email_id_inject+'&date_id='+this.date_id_inject;
// console.log(this.forgot);
// console.log(this.date_id_inject);
// console.log(this.email_id_inject);
}
changepassword()
{
const forgot ={
pass_word:this.pass_word
}
this.forgotpasswordservice.forgotpassword(forgot).subscribe(forgot=> {
console.log(forgot);
if (forgot.success)
{
----success and route to login screen --
}
else
{
--- failure error
}
通常,对于POST请求,您将在请求的正文中发送其他数据。 由于您将请求内容类型标头设置为application/json
,因此您应该在正文中发送json。 您可以通过将json作为第二个参数传递到http.post
来简单地做到这http.post
return this.http.post(
"http://localhost:90/forgotpassword/?email_id=test@gmail.com&date_id=03/30/2007",
forgot, // pass json into the body of the request
{headers:headers}
)
.map(res => res.json());
如果您确实需要将数据作为查询参数进行传递,则可以将其手动添加到url或使用URLSearchParams
let params = new URLSearchParams();
params.append('email_id', forgot.email_id);
return this.http.post(
"http://localhost:90/forgotpassword/?email_id=test@gmail.com&date_id=03/30/2007",
{},
{headers:headers, params:params} // add params to options to be appended to url as query params
)
注意:UrlSearchParams用于旧的HTTPModule,当使用新的HTTPClientModule时,请改用HttpParams。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.