【问题标题】:angular post method parameters角柱方法参数
【发布时间】:2018-03-20 20:26:17
【问题描述】:

我目前正在使用 Angular 4 来构建我的 Web 应用程序。我通过对 Web 服务的 rest 调用获取数据,当我发布数据时,我想知道我是否可以更改正文呈现(post 方法中的第二个参数)用一个对象,这样说明会更容易。

 updatePasswordWithObservable(userToAdd:User) {
        let headers = new Headers({ 'Content-Type': 'application/json' });
            let options = new RequestOptions({ headers: headers });


                       this.http.post(this.updatePwdUrl, 

{
                            "internalId": 0,
                            "oldPwd": "",
                            "pwd": "123",
                            "reset": true,
                            "userEntry": {
                              "activeNotifications": true,
                              "aspects": [
                                {
                                  "aspectName": "string",
                                  "internalId": 0
                                }
                              ],
                              "email": "souad122@gmail.com",
                              "enabled": true,
                              "lastName": "waaaa",
                              "login": "souad122@gmail.com",
                              "name": "souad12219",
                              "phone": ""
                            }
                          }

) 。订阅( 水库=> { 控制台.log(res); }, 错误 => { console.log("发生错误"); } ); }

【问题讨论】:

    标签: angular angular2-template angular2-services


    【解决方案1】:

    是的,您可以使用对象。不过,您需要先将其转换为JSON。您可以使用JSON.stringify 这样做:

    updatePasswordWithObservable(userToAdd:User) {
        let data = JSON.stringify({
                                "internalId": 0,
                                "oldPwd": "",
                                "pwd": "123",
                                "reset": true,
                                "userEntry": {
                                  "activeNotifications": true,
                                  "aspects": [
                                    {
                                      "aspectName": "string",
                                      "internalId": 0
                                    }
                                  ],
                                  "email": "souad122@gmail.com",
                                  "enabled": true,
                                  "lastName": "waaaa",
                                  "login": "souad122@gmail.com",
                                  "name": "souad12219",
                                  "phone": ""
                                }
                              });
    
        let headers = new Headers({ 'Content-Type': 'application/json' });
        let options = new RequestOptions({ headers: headers });
    
        this.http.post(this.updatePwdUrl, data)
            .subscribe( res => { console.log(res); }, err => { console.log("Error occured"); } ); 
    }
    

    【讨论】:

    • 我收到此错误内容类型 text/plain not supported :/
    【解决方案2】:

    您可以以 Json 格式发布数据,例如:

    public loadApp(): Observable<any> {
    
        const data = {
          'type' : 'ReadRequest',
          'query' : 'get',
          'parameters' : { 'app' : 'new' }
        };
    
        return this.http.post(null, data)
          .map(res => (<any>res)._body === '' ? {} : res.json())
          .catch(this.handleError);
      }
    
      private handleErrorObservable(error: Response | any) {
        return Observable.throw(error.message || error);
      }
    
      private handleError(error: any): Promise<any> {
        console.error('loadAuditories: ', error);
        return Promise.reject(error.message || 'Server error: ' + error);
      }
    

    关注const data。是最简单的对象JS。

    【讨论】:

    • 我忘记了标题选项
    • 请接受我的回答
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-12
    • 1970-01-01
    • 2010-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多