http
서비스를 사용하는 올바른 방법이 무엇인지 궁금합니다. 예를 들어 서버에 대한 모든 내 요청은 /Api
으로 시작합니다. 매번 this.http.get('/Api/SomeRoute/:id')
으로 작성해야합니까, 아니면 더 세련된 방법으로 Api
을 생략해도됩니까?Angular 2 HTTP 서비스 구성
http
을 사용하는 다른 managerService
을 만들어야하나요?
http
서비스를 사용하는 올바른 방법이 무엇인지 궁금합니다. 예를 들어 서버에 대한 모든 내 요청은 /Api
으로 시작합니다. 매번 this.http.get('/Api/SomeRoute/:id')
으로 작성해야합니까, 아니면 더 세련된 방법으로 Api
을 생략해도됩니까?Angular 2 HTTP 서비스 구성
http
을 사용하는 다른 managerService
을 만들어야하나요?
과 같은 끝점은 일반적으로 구성 파일의 좋은 예입니다.
내 2 각도 응용 프로그램에서 나는 그것에 대한 의존성 주입을 사용합니다.
import { OpaqueToken } from '@angular/core';
export interface IAppConfig {
appTitle: string;
endpointUrl: string;
};
export const CONFIG: IAppConfig = {
appTitle: 'MyApp',
endpointUrl: 'http://api.myrealservice.com/'
};
export const LOCALCONFIG: IAppConfig = {
appTitle: 'MyApp (LOCAL)',
endpointUrl: 'http://localhost:8080/api/'
};
export let APP_CONFIG = new OpaqueToken('app.config');
당신은 (지역 개발 또는 생산 등을위한 예를 들어) 여러 CONFIGS을 가질 수 있습니다이 방법 및 정의 :이 경우 내가 OpaqueToken
를 사용하여 app.config.ts 같은 그것은 주사 확인해야 이 같은 모듈의 공급자로 : 내가 그것을 필요로 어디에 있든지
providers: [
...,
{
provide: APP_CONFIG,
useValue: CONFIG
},
...
]
그럼 난 그냥 백엔드 서비스, 예를 들어,이 설정을 주입 endpointUrl 사용하기 :
을...
constructor(@Inject(APP_CONFIG) private _config:Config) {
console.log(this._config.endpointUrl);
}
은 모듈에서 당신은 당신이 (이 예 예를 들어 CONFIG
또는 LOCALCONFIG
에서)를 제공 할 구성의 종류를 변경할 수 있습니다 더 이상 다른 곳을 변경할 필요가 없습니다.
희망이 도움이됩니다. 편집 한 후
, 당신은 두 번째 질문 을 추가 아니면 HTTP를 사용하는 다른 managerService를 작성해야합니까? :
짧은 대답 : 예. 가능한 한 구성 요소, 서비스 등의 논리를 분리해야합니다.
고양이와 개에 관한 정보를 제공하는 API가 있다고 가정 해 보겠습니다. 프론트 엔드에서 원하는 것은 무엇이든 원하는대로 CatService
, DogService
및 BackendService
또는 ApiService
일 것입니다.
CatService
및 DogService
은보기 구성 요소가 상호 작용할 항목입니다. 예를 들어 getCatById()
또는 그와 비슷한 메소드가 있습니다.이러한 서비스는 대부분 012 타월 서비스 인 BackendService
과 상호 작용하며 Http
을 삽입하고 post()
, get()
등과 같은 일반적인 방법을 사용합니다.
귀하의 은 특정 URL을 알고 응답 또는 오류를 처리하고 결과가 포함 된 호출 서비스로 다시보고하는 반면 다른 것들은 파이프 라인으로 사용되어 특정 비즈니스 논리를 처리해야하는 사람입니다 .
맞습니다. 반복되는 값을 변수에 넣는 것이 좋습니다.
const apiUrl = '/Api/';
을하고 URL의 변경이있는 경우 다음, 당신은 하나 개의 장소에 변경하고 또한 당신의 코드는 청소기 모양 : 당신은 const
에서 기본 URL을 넣을 수 있습니다. 사용법은 다음과 같습니다 :
this.http.get(apiUrl + 'SomeRoute/:id')
당연히 당신을위한 기능을 만들 수도 있지만 너무 추상적입니다.
구성 파일 (json)을 만들고 거기에 루트 URL을 넣으십시오. – Mehari