Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Http request and response in Angular 2.0

I am stuck in a problem, where my webservice (written in Spring boot) takes 5-6 minutes for a http response. I send a http post request from angular but chrome waits for only 2 minutes gives me a null response since there was no response from server. But server will give a response after 5 minutes. So how can I implement this scenario, since I think my http connection closes after 2 minutes and I want to extend it till 5-6 minutes. FYI I have already used rxjs timeout function but it doesn't work, the default timeout of 2 mins always wins. Thank you

like image 439
Darshil Gada Avatar asked Mar 30 '18 06:03

Darshil Gada


People also ask

What is HTTP request in Angular?

HttpRequest represents an outgoing request, including URL, method, headers, body, and other request configuration options. Instances should be assumed to be immutable. To modify a HttpRequest , the clone method should be used.

What does HTTP GET return in Angular?

Use the HttpClient.get() method to fetch data from a server. The asynchronous method sends an HTTP request, and returns an Observable that emits the requested data when the response is received. The return type varies based on the observe and responseType values that you pass to the call.

What is HTTP and HttpClient in Angular?

What Is HttpClient? HttpClient is a built-in service class available in the @angular/common/http package. It has multiple signature and return types for each request. It uses the RxJS observable-based APIs, which means it returns the observable and what we need to subscribe it.

What is the use of HttpClientModule in Angular?

The HttpClientModule is a service module provided by Angular that allows us to perform HTTP requests and easily manipulate those requests and their responses. It is called a service module because it only instantiates services and does not export any components, directives or pipes.


1 Answers

The issue is not with chrome You must be using Proxying support in which dev-server makes use http-proxy-middleware package and the proxy options provided in this package is from underlying http-proxy library. one among them is

proxyTimeout:

timeout (in millis) when the proxy receives no response

The default value is ~120 seconds and a new request is made if the backend fails to respond within the stipulated time. overriding the default timeout with "timeout":360000 in the proxy config file will resolve the issue.

{
  "/api/*": {
     "target":  {
       "host": "localhost",
       "protocol": "http:",
       "port": 8080
     },
     "secure": false,
     "changeOrigin": true,
     "logLevel": "debug",
     "timeout":360000
  
  }
}

you also need to enable Cross-Origin Requests for a RESTful Web Service using @CrossOrigin annotation in your controller link.The @CrossOrigin is used to allow Cross-Origin Resource Sharing (CORS) so that our angular application running on a different server can consume these APIs from a browser.

    @CrossOrigin(origins = "http://localhost:4200", maxAge = 3600)
    @RestController
    @RequestMapping({"/api"})
    public class UserController {
           ......
}

I assume your angular is running on port 4200 with above configuration you can consume your API's.

NOTE: The proxy configuration is intended to proxy calls when running the dev server via ng serve. After you run ng build you are responsible for the web server and its configurations

like image 75
Vikas Avatar answered Sep 19 '22 03:09

Vikas