First API call is slow

Discussão em 'Angular' iniciado por Lenwë Galathil, Outubro 31, 2024.

  1. I made on a shared OVH hosting an API with Symfony 7 for the backend. The frontend is under Angular 18.2 Everything works fine except for the first API call which is allways slowlier than the other. [​IMG]

    I did the connector with Curl then i change for Guzzle, it has improved the response time but it is allways too slow. Initialy i did the Front with AngularJS 1.82, and so then i change to Angular 18.2 It does not improved performance but i can use modern tools like RXJS to improve API Calls.

    Do you have any ideas for improving first call response time ?

    Here is my adaptator code for the token creation and a simple GET Token

    public function generateCreatioToken() {
    $client = new Client();

    $options = [
    'form_params' => [
    'client_id' => $this->clientId,
    'client_secret' => $this->clientSecret,
    'grant_type' => 'client_credentials'
    ]];
    $request = new Request( 'POST', $this->oauthurl .'/connect/token',
    ['headers' => ['User-Agent' => null]]);
    $res = $client->sendAsync($request, $options)->wait();

    return json_decode($res->getBody());
    }


    Get

    /*
    * READ
    * Requête en GET sur CRM
    * $apiQuery: array dont le contenu des éléments est encodé en URL
    */
    public function WSGETBPM($collection, $apiQuery, $token, $nbresult = 10000) {

    $client = new Client();
    $headers = [
    'Accept' => 'application/json; odata=verbose',
    'Authorization' => 'Bearer '.$token,
    'User-Agent' => null
    ];

    $targetUrl = $this->urlapi . '/0/ServiceModel/EntityDataService.svc/' . $collection;
    if (count($apiQuery) > 0) {
    $targetUrl .= '?' . implode('&', array_map(function ($item) {
    return $item[0] . '=' . $item[1];
    }, array_map(null, array_keys($apiQuery), $apiQuery)));
    }
    $request = new Request('GET', $targetUrl, $headers);
    $res = $client->sendAsync($request)->wait();
    return $res->getBody();
    }


    With Angular my service code:

    getOrderNumberById(orderId: string): Observable<OrderValidation> {
    const options = { params: new HttpParams().set('orderId', orderId) };
    return this.http.post<OrderValidation>(this.url + 'Creatio/getOrderNumberById', options).pipe(
    retry(3),
    catchError(this.handleError)
    )


    }

    Using an interceptor:

    intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    const authToken = this.authService.getAuthToken();

    const authReq = request.clone({
    setHeaders: {
    'Authorization': `${authToken}`,
    'Content-Type': 'application/json; charset=utf-8'
    }
    })

    Continue reading...

Compartilhe esta Página