首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在角服务中发送http post请求中的params (角2)

如何在角服务中发送http post请求中的params (角2)
EN

Stack Overflow用户
提问于 2017-11-09 17:37:21
回答 1查看 4.2K关注 0票数 0

我的要求:

我正在开发一个简单的密码重置功能。它有两个组件验证用户(电子邮件id和加入日期)和忘记密码(新通行证,确认通行证)。如果它是一个有效的用户,那么系统应该携带数据和路由到下一页,忘记密码,一旦用户输入新的密码并确认通过,点击submit就应该重新设置密码。

问题:

我能够在组件之间注入数据,但不确定如何将数据( email、id和Date )作为forgotpass.service.ts文件中http请求中的查询字符串params传递,这将调用我的后端执行密码重置操作。

在这方面的任何帮助都是非常感谢的。

代码片段:

忘记password.service.ts

代码语言:javascript
运行
复制
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());    
  }

}

Forgotpass.component.ts

代码语言:javascript
运行
复制
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
          }
EN

回答 1

Stack Overflow用户

发布于 2017-11-09 19:42:38

通常,在POST请求中,您会在请求正文中发送其他数据。由于您将请求内容类型标头设置为application/json,所以应该在正文中发送json。只需将json作为第二个参数传入http.post,就可以做到这一点。

代码语言:javascript
运行
复制
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。

代码语言:javascript
运行
复制
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代替。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47208246

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档