我试图从Angular 2中调用Magento 2的REST API。
从很长时间面对这个问题,真的需要修复关于问题所在的相同或至少的建议吗?
以下是我如何从Angualar调用REST:
@Injectable()
export class ProductService {
public _productUrl = 'http://10..../Mage_ang2/index.php/rest/V1/customers/1';
constructor(private _http: Http) { }
getProducts(): Observable<IProduct[]> {
let headers = new Headers({ 'Content-Type': 'application/json; charset=utf-8' });
headers.append('Authorization', 'Bearer ntthnrbj1uam2tuv1ekva7n8jh18mcnkby3');
let options = new RequestOptions( {method: RequestMethod.Get, headers: headers });
console.log(headers);
return this._http.get(this._productUrl,options)
.map((response: Response) => <IProduct[]> response.json())
.do(data => console.log('All: ' + JSON.stringify(data)))
.catch(this.handleError);
}
当我在邮差中发布相同内容时,我会收到回复。
当我使用相同的标题运行Angular2时,我得到一个JSON响应,但是有400个(错误请求)!
此外,响应不会发出实际请求。
答案 0 :(得分:1)
我在示例应用程序中使用了相同的语法但没有授权标头。一切似乎都是正确的。
问题可能在于设置授权标头。检查授权令牌的正确性。
尝试使用此语法设置标题
let headers = new Headers({ 'Content-Type': 'application/json; charset=utf-8';Authorization: **token** });
答案 1 :(得分:0)
试试这个,它应该可行
let headers = new Headers({
'Content-Type': 'application/json',
'Authorization':'Bearer ntthnrbj1uam2tuv1ekva7n8jh18mcnkby3'
});
return this._http.get(url,{headers:headers})
.map(response: any => {
return response.json();
});
答案 2 :(得分:0)
尝试
const headers = new Headers({ 'Content-Type': 'application/json', 'Authorization': 'Bearer ntthnrbj1uam2tuv1ekva7n8jh18mcnkby3' });
let options = new RequestOptions({ headers: headers });
return this._http.get(this._productUrl,options)