2017-12-29 35 views
0

내 응용 프로그램에 대한 RestAPI 구현을 완료했습니다. 이제 Angular를 사용하여 프런트 엔드 앱을 개발하려고합니다. 각 RestAPI는 개별 JSON 객체를 반환합니다. 각 HTTP 요청마다 개별 RestAPI에 대한 각 호출을 구현하는 대신 하나의 인터페이스를 구현하여 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)); 

는 두 가지 방법이 여기 있습니다,하지만 난 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 호출을 구현하지 않도록하고 싶습니다. 나는 하나의 기능으로 해결하고 싶다. 이게 이상한가요? –