Я использую сваггер для вызовов API. Теперь мой вопрос. Обязательно ли делать отдельные услуги сгенерированного сервиса от чванства? Например. У меня есть этот сгенерированный сервис от swagger:
@Injectable({
providedIn: 'root'
})
export class AdviceService {
protected basePath = 'http://localhost';
public defaultHeaders = new HttpHeaders();
public configuration = new Configuration();
constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {
if (configuration) {
this.configuration = configuration;
this.configuration.basePath = configuration.basePath || basePath || this.basePath;
} else {
this.configuration.basePath = basePath || this.basePath;
}
}
/**
* @param consumes string[] mime-types
* @return true: consumes contains 'multipart/form-data', false: otherwise
*/
private canConsumeForm(consumes: string[]): boolean {
const form = 'multipart/form-data';
for (const consume of consumes) {
if (form === consume) {
return true;
}
}
return false;
}
* @param participantId
* @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
* @param reportProgress flag to report request and response progress.
*/
public get(participantId: string, observe?: 'body', reportProgress?: boolean): Observable<Array<AdviceApi>>;
public get(participantId: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<Array<AdviceApi>>>;
public get(participantId: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<Array<AdviceApi>>>;
public get(participantId: string, observe: any = 'body', reportProgress: boolean = false ): Observable<any> {
if (participantId === null || participantId === undefined) {
throw new Error('Required parameter participantId was null or undefined when calling get.');
}
let headers = this.defaultHeaders;
// authentication (Bearer) required
if (this.configuration.accessToken) {
const accessToken = typeof this.configuration.accessToken === 'function'
? this.configuration.accessToken()
: this.configuration.accessToken;
headers = headers.set('Authorization', 'Bearer ' + accessToken);
}
// to determine the Accept header
const httpHeaderAccepts: string[] = [
'text/plain',
'application/json',
'text/json'
];
const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);
if (httpHeaderAcceptSelected !== undefined) {
headers = headers.set('Accept', httpHeaderAcceptSelected);
}
// to determine the Content-Type header
const consumes: string[] = [
];
return this.httpClient.get<Array<AdviceApi>>(`${this.configuration.basePath}/api/patient/${encodeURIComponent(String(participantId))}/Advice`,
{
withCredentials: this.configuration.withCredentials,
headers: headers,
observe: observe,
reportProgress: reportProgress
}
);
}
}
Так что этот метод get - это получение советов. Но я также создаю отдельную службу, например, такую, где я вызываю сообщение get из сгенерированной службы swagger:
@Injectable({
providedIn: 'root'
})
export class AdviceServiceVital10 {
user$ = this.authService.loginStatus().pipe(take(1));
constructor(private authService: AuthService, private adviceService: AdviceService) {}
getAdvice(): Observable<AdviceApi[]> {
return this.user$.pipe(mergeMap(({ profile }) => this.adviceService.get(profile.participant)));
}
}
И затем внедряю службу AdviceServiceVital10 в компонент. Потому что я делаю это для модульного тестирования.
Но нужно ли это? или этого достаточно, чтобы напрямую внедрить сгенерированный сервис сваггера в компонент?
Надеюсь, у меня есть ясное понимание.
Так что спасибо.