angular 2创建自定义变量以在指定的URL

时间:2016-08-24 09:27:00

标签: angular crud angular2-services angular-http

下面是一个包含一些http请求的模型。我的问题是,我可以通过实例化一个新的类对象来实例化服务吗?

export class DbHttp {

    private path:string;

    constructor(private path:string, private customService:CustomService){}

    create(data:Object):Observable<Response>{
        return this.customService.create(this.path, data)
    }

    getAll():Observable<Response>{
        return this.customService.getAll(this.path)
    }
}

我想要实现的是在自定义网址上执行http请求的快捷方式。理想情况下,语法应该是这样的

public dbAccessTodo = this.service.access('todo')
//access is a method which returns an object with builtin CRUD functions for a Base_Url+'todo'

create(data){
  this.dbAccessTodo.create(data)
}

谢谢!

1 个答案:

答案 0 :(得分:0)

我不确定你想要达到的目标。

我创建了这样的服务:

'use strict';

angular.module('recipe').factory('RecipeService', [ '$resource',
  function ($resource) {
    // Recipe service logic
    var Recipe = $resource('api/recipes/:recipeId', {
      recipeId: '@_id'
    }, {
      update: {
        method: 'PUT'
      }
    });

    angular.extend(Recipe.prototype, {
      createOrUpdate: function () {
        var recipe = this;
        return createOrUpdate(recipe);
      }
    });

    function createOrUpdate(recipe) {
      if(recipe._id) {
        return recipe.$update(onSuccess, onError);
      } else {
        return recipe.$save(onSuccess, onError);
      }

      function onSuccess(recipe) {

      }

      function onError(errorResponse) {
        var error = errorResponse.data;
        handleError(error);
      }
    }

    function handleError(error) {
      console.log(error);
    }

    // Public API
    return Recipe;
  }
]);

要更改我的api的基本URL,我使用CustomRequestOptions

@Injectable()
export class OrderService {
    private endPoint = 'Orders';

    constructor(private http: Http) { }

    get(id: string) {
        return this.http
            .get(`'${this.endPoint}/${id}`, { body: '' })
            .map(res => res.json());
    }

希望这有帮助,否则,请更详细地解释您的问题。