Angular 2 http.post发送空对象

Angular 2 http.post发送空对象,angular,express,angular2-http,Angular,Express,Angular2 Http,这是一个authservice登录名: 我已经做了控制台日志来确定数据是否真的被传递了,是的。一切正常 除此之外,发送的数据只是{} 根据我的Express控制台,这是唯一通过req.body的东西。req.headers表示内容类型正确,即内容类型:application/json 我尝试过使用POSTMan将相同的json请求发送到API端点。很好 Angular 2的http.post袖子上还有其他窍门吗 上面的代码有什么问题吗?在这里发布答案,可能会有帮助。感谢@cartant的指点。我

这是一个authservice登录名:

我已经做了控制台日志来确定数据是否真的被传递了,是的。一切正常

除此之外,发送的数据只是{}

根据我的Express控制台,这是唯一通过req.body的东西。req.headers表示内容类型正确,即内容类型:application/json

我尝试过使用POSTMan将相同的json请求发送到API端点。很好

Angular 2的http.post袖子上还有其他窍门吗


上面的代码有什么问题吗?

在这里发布答案,可能会有帮助。感谢@cartant的指点。我只需要仔细看看:

我不需要显式地设置标题。默认情况下,post发送的内容类型为:application/json 我不必对要发送的数据进行字符串化

login(email: string, password: string): Observable<boolean> {
// this is optional
// let headers = new Headers({ 'Content-Type': 'application/json' });
// let options = new RequestOptions({ headers: headers });

return this.http.post(
    apiURL + '/admin/login',
    { email: email, password: password },
    // options
    )
    .map((response: Response) => {
        // login successful if there's a jwt token in the response
        let token = response.json() && response.json().token;
        if (token) {
            // set token property
            this.token = token;

            // store username and jwt token in local storage to keep user logged in between page refreshes
            localStorage.setItem('currentUser', JSON.stringify({ email: email, token: token }));

            // return true to indicate successful login
            return true;
        } else {
            // return false to indicate failed login
            return false;
        }
    });
}

在这里发布答案,可能会对某人有所帮助。感谢@cartant的指点。我只需要仔细看看:

我不需要显式地设置标题。默认情况下,post发送的内容类型为:application/json 我不必对要发送的数据进行字符串化

login(email: string, password: string): Observable<boolean> {
// this is optional
// let headers = new Headers({ 'Content-Type': 'application/json' });
// let options = new RequestOptions({ headers: headers });

return this.http.post(
    apiURL + '/admin/login',
    { email: email, password: password },
    // options
    )
    .map((response: Response) => {
        // login successful if there's a jwt token in the response
        let token = response.json() && response.json().token;
        if (token) {
            // set token property
            this.token = token;

            // store username and jwt token in local storage to keep user logged in between page refreshes
            localStorage.setItem('currentUser', JSON.stringify({ email: email, token: token }));

            // return true to indicate successful login
            return true;
        } else {
            // return false to indicate failed login
            return false;
        }
    });
}

好的,数据是否通过了?这里有点矛盾。一方面你说数据是传递的,另一方面你说数据只是:{}:@AJT_82抱歉搞混了。我的意思是,一个空对象{}是http.post发送的唯一东西。这是什么。模型?我希望JSON.stringify{email:email,password:password}对后面的逗号不满意;你能检查一下并确认这是一个问题吗?我更倾向于这样做好的,数据通过了吗?这里有点矛盾。一方面你说数据是传递的,另一方面你说数据只是:{}:@AJT_82抱歉搞混了。我的意思是,一个空对象{}是http.post发送的唯一东西。这是什么。模型?我希望JSON.stringify{email:email,password:password}对后面的逗号不满意;你能回顾一下并确保这是一个好的解决方案吗?我更倾向于这样做,那么,解决方案是什么呢?你忘了什么?@Enrico我不必对要发送的数据进行字符串化。那么,解决方案是什么?你忘了什么?@Enrico我不必对要发送的数据进行字符串化。
login(email: string, password: string): Observable<boolean> {
// this is optional
// let headers = new Headers({ 'Content-Type': 'application/json' });
// let options = new RequestOptions({ headers: headers });

return this.http.post(
    apiURL + '/admin/login',
    { email: email, password: password },
    // options
    )
    .map((response: Response) => {
        // login successful if there's a jwt token in the response
        let token = response.json() && response.json().token;
        if (token) {
            // set token property
            this.token = token;

            // store username and jwt token in local storage to keep user logged in between page refreshes
            localStorage.setItem('currentUser', JSON.stringify({ email: email, token: token }));

            // return true to indicate successful login
            return true;
        } else {
            // return false to indicate failed login
            return false;
        }
    });
}