2017-12-29 28 views
0

私はアプリケーション用のRestAPIの実装を完了しました。今、Angularでフロントエンドアプリを開発しようとしています。各RestAPIは個々のJSONオブジェクトを返します。 RestAPI呼び出しをきちんとするために、単一のインターフェイスを実装する方法はありますか?具体的には、以下では、複数のAPIに共通のインターフェースを実装するにはどうすればよいですか?

this.http.get('http://a.b.c/api/people/1').subscribe(json => makePerson(json)); 
this.http.get('http://a.b.c/api/animal/1').subscribe(json => makeAnimal(json)); 
this.http.get('http://a.b.c/api/flower/1').subscribe(json => makeFlower(json)); 

は、2つの異なる方法がここにありますが、私はAPIのURLとクラス名を渡すことによって、これらの3つのメソッド呼び出しを受け入れるための一つのインタフェースを生成することができますか?

this.call_restapi(url, 'Person'); 
this.call_restapi(url, 'Animal'); 
this.call_restapi(url, 'Flower'); 

ご迷惑をおかけいたしますか?

答えて

1

サブスクライバにswitch文を追加し、引数を使用してGETリクエストとswitch文をナビゲートできます。

get(type: string) { 
    const url: string = 'http://a.b.c/api/' + type + '/1'; 
    this.http.get(url).subscribe(
    (json) => { 
     switch(type) { 
     case('people'): 
      this.makePerson(json)); 
      break; 
     case('animal'): 
      this.makeAnimal(json)); 
      break; 
     case('flower'): 
      this.makeFlower(json); 
      break; 
     default: 
      break; 
     } 

    }); 
    } 
+0

ワウ!さらに進むには、どのような制限もなく、これを処理する方法はありますか?私が言っているのは、私がapiのURLにルールを入れたくないということです。渡されたのと同じapi urlからJSONオブジェクトを受け取りたいだけです。この質問のポイントは、変数を使ってオブジェクトを動的に作成する方法がより関連していますか? –

+0

私はそうは考えていませんが、それが可能であると仮定すると、処理が複雑すぎる可能性があるため理想的な解決策のようには聞こえません。多分あなたはあなたの問題を過度に思っているかもしれません、本当にここで目標は何ですか? – Iancovici

+0

私が考えているのは、クラス名( '人物'、 '動物'、 '花')とオブジェクトタイプ(人物、動物、花)のキーと値のマップを作成することです。返されたJSONオブジェクトは、渡されたクラス名に従って対応するオブジェクトにマップされます。したがって、個々のRestAPI呼び出しの実装を避けたいと思います。私はただ一つの機能で解決したい。これは変ですか? –

関連する問題