外部API

时间:2017-02-20 08:08:43

标签: javascript json angular

我无法弄清楚如何将此AngularJS $ http.get重写为Angular2:

$scope.toggle = function() {
 $http.get('http://example.com?operation=getEmployeeData', {
    params: {
      data: JSON.stringify({
        params: {
          firstName : 'John',
          lastName  : 'Doe',
          empType   : 'Administrative',
          orgUnit   : 'Management',
          lang      : 'Eng'
        }
      })
    }
  }).then(function(data) { $scope.staff = data }

这个带参数的网址如何:

  

http://example.com?operation=getEmployeeData&data= {" PARAMS" {"的firstName":"约翰"" lastName的":" DOE""的empType":"管理"" ORGUNIT":"管理""朗&#34 ;: "主机"}}

我是如何在Angular2中完成的? 谢谢!

2 个答案:

答案 0 :(得分:2)

在Angular2中,Http.GET与AngularJS非常相似,但是为了传递url参数,你必须在URLSearchParams包中使用@angular/http
你想做什么:

let params: URLSearchParams = new URLSearchParams();
params.set("data",JSON.stringify({
        params: {
          firstName : 'John',
          lastName  : 'Doe',
          empType   : 'Administrative',
          orgUnit   : 'Management',
          lang      : 'Eng'
        }
      }));
//Make the call and return an observable
 return this.http.get(SomeVar.MY_URL, params)
      .toPromise()
      ...

答案 1 :(得分:1)

这是post / get的示例。只需使用方法作为帖子或取决于您的要求。

您需要将methodname替换为您正在调用的方法名称。

 private url = "http://example.com";

 methodname(resource1: String,resource2: String,resource3: String,resource4: 
 String,resource5: String){

 let body = JSON.stringify({"firstName":resource1,"lastName":resource2,
 "empType":resource3,"orgUnit":resource4,"lang":resource5});

let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers, method: "post/get" });

 return this.http.get/post(this.url,body,options)
        .map(this.extractData)
        .catch(this.handleError);
}