创建新的Restangular方法¶
我们假设您的API需要一些自定义方法才能工作。
如果是这种情况,总是使用所有参数为该方法调用customGET或customPOST是一个痛苦的屁股。
这就是为什么每个元素都有一个addRestangularMethod方法。
这可以与钩子addElementTransformer一起使用来做一些整洁的东西。
让我们看一个例子来学习这个:
// 用于设置默认的restangular配置的功能 export function RestangularConfigFactory (RestangularProvider) { // 它将转换所有建筑元素,而不是集合 RestangularProvider.addElementTransformer('buildings', false, function(building) { // 这将添加一个名为evaluate的方法,它将使用NO缺省查询参数进行路径求值,并使用一些默认的头签名(name,operation,path,params,headers,elementToPost) building.addRestangularMethod('evaluate', 'get', 'evaluate', undefined, {'myHeader': 'value'}); return building; }); RestangularProvider.addElementTransformer('users', true, function(user) { // 这将添加一个名为login的方法,它将对路径登录签名进行POST(名称,操作,路径,参数,标题,elementToPost) user.addRestangularMethod('login', 'post', 'login'); return user; }); } // AppModule是进入Angular 2引导过程的主要入口点 @NgModule({ bootstrap: [ AppComponent ], imports: [ // 导入Angular的模块 RestangularModule.forRoot(RestangularConfigFactory), ], }) // 然后,在您的代码中稍后您可以执行以下操作: // 到达 /buildings/123/evaluate?myParam=param 用标题myHeader: value // 如果这是一个安全的操作(GET,OPTIONS等),这个“自定义创建”方法的签名是(params,headers,elem) // 如果这是一个不安全的操作(POST,PUT等),签名是(elem,params,headers). // 如果将某些内容设置为此变量,则将覆盖方法创建中的默认设置 // 如果未设置任何内容,则会发送默认值 Restangular.one('buildings', 123).evaluate({myParam: 'param'}); // 到达 /buildings/123/evaluate?myParam=param 用标题myHeader:: specialHeaderCase Restangular.one('buildings', 123).evaluate({myParam: 'param'}, {'myHeader': 'specialHeaderCase'}); // 这里POST的主体将是{key:value},因为POST是一个不安全的操作 Restangular.all('users').login({key: value});