The ProductService is an Angular service that interacts with our REST endpoints, and is created in product.service.ts:
@Injectable({ providedIn: 'root' })
export class ProductService {
private resourceUrl = SERVER_API_URL + 'api/products';
constructor(private http: HttpClient) { }
...
query(req?: any): Observable<EntityArrayResponseType> {
const options = createRequestOption(req);
return this.http.get<IProduct[]>(
this.resourceUrl,
{ params: options, observe: 'response' }
);
}
...
}
As you can see, the service has a constructor with dependencies that are injected following a similar pattern as our server-side code. There are methods mapping all the CRUD actions to the backend REST resource. The HTTP calls make use of RxJS observables to provide an asynchronous streaming API, which is much better than a promise-based API.