use-http | 🐶 React hook for making isomorphic http requests | Frontend Framework library
kandi X-RAY | use-http Summary
kandi X-RAY | use-http Summary
If the last argument of useFetch is not a dependency array [], then it will not fire until you call one of the http methods like get, post, etc. This fetch is run onMount/componentDidMount. The last argument [] means it will run onMount. If you pass it a variable like [someVariable], it will run onMount and again whenever someVariable changes values (aka onUpdate). If no method is specified, GET is the default. Can put suspense in 2 places. Either useFetch (A) or Provider (B). Can put suspense in 2 places. Either useFetch (A) or Provider (B). Suspense mode via managed state is very experimental. The onNewData will take the current data, and the newly fetched data, and allow you to merge the two however you choose. In the example below, we are appending the new todos to the end of the current todos. ️ Do not destructure the response object! Details in this video. Technically you can do it, but if you need to access the response.ok from, for example, within a component's onClick handler, it will be a stale value for ok where it will be correct for response.ok. ️️️. The Provider allows us to set a default url, options (such as headers) and so on. These props are defaults used in every request inside the . They can be overwritten individually. This example shows how we can do authentication in the request interceptor and how we can camelCase the results in the response interceptor. This example shows how we can upload a file using useFetch. This example shows how we can get .json(), .text(), .formData(), .blob(), .arrayBuffer(), and all the other http response methods. By default, useFetch 1st tries to call response.json() under the hood, if that fails it's backup is response.text(). If that fails, then you need a different response type which is where this comes in. This example shows how to remove a header all together. Let's say you have , but for one api call, you don't want that header in your useFetch at all for one instance in your app. This would allow you to remove that. In this example you can see how retryOn will retry on a status code of 305, or if we choose the retryOn() function, it returns a boolean to decide if we will retry. With retryDelay we can either have a fixed delay, or a dynamic one by using retryDelay(). Make sure retries is set to at minimum 1 otherwise it won't retry the request. If retries > 0 without retryOn then by default we always retry if there's an error or if !response.ok. If retryOn: [400] and retries > 0 then we only retry on a response status of 400.
Support
Quality
Security
License
Reuse
Top functions reviewed by kandi - BETA
Currently covering the most popular Java, JavaScript and Python libraries. See a Sample of use-http
use-http Key Features
use-http Examples and Code Snippets
private static void useClientWithAuthenticator() throws URISyntaxException, IOException, InterruptedException {
HttpClient client = HttpClient.newBuilder()
.authenticator(new Authenticator() {
@Override
private static void useClientWithHeaders() throws IOException, InterruptedException, URISyntaxException {
HttpClient client = HttpClient.newBuilder()
.build();
HttpRequest request = HttpRequest.newBuilder()
.G
Community Discussions
Trending Discussions on use-http
QUESTION
I've been using RateLimiter (github) successfully with my project for a while now. I've recently discovered dependency injection and am attempting to migrate my code as-is to use this but I'm stuck on RateLimiter.
Normal usage from the docs is
...ANSWER
Answered 2021-May-22 at 02:56I don't know if this is a bug or a feature, but to fix this I believe you need to add the delegating handler as Transient as well.
So, in a typical scenario, you'd set up a DelegatingHandler
as so:
QUESTION
ANSWER
Answered 2021-May-17 at 12:55But, if I add it as a dependency (for good practice purposes), the hook runs continuously and I get recurring console.log statements. Could someone please explain why this is happening?
Because sendRequest
is a function which is re created each time the component is re-rendered, hence, it is different on each render. Because of that, when it is listed as a dependency, useEffect
re-runs. Consider using useCallback
and wrapping sendRequest
using it.
Consider re-rendering of a component same as the function being re-invoked, hence you are creating all the variables or functions inside it from scratch (except cases when React takes care to retain value of your variable across re-renders; this happens with variables from state for example).
QUESTION
I have many CRUD APIs that are communication with each other over HTTP calls (.NET 5)
To avoid too many open tcp connections, I use HttpClientFactory via DI in all those services. This works well and I do not experience too many connections that are opened via HTTP.
But my Azure App Services are still complaining about too many SNAT-connections:
I guess that the reason is the Azure Service Bus.
Each call of my APIs will write events to the bus.
To do this I create a new instance on each call:
ANSWER
Answered 2021-May-15 at 12:48But what about Azure Service Bus? There is nothing like an AzureServiceBusFactory or so and adding the AzureServiceBus as a Singleton would not be a good idea, because the configuration should be different on each call.
It is actually the other way round. Service Bus team recommends that connection to your Service Bus should be registered as Singleton only using ServiceBusClientBuilderExtensions
and should not be closed or disposed after every operation.
From this link
:
The Service Bus objects that interact with the service, such as ServiceBusClient, ServiceBusSender, ServiceBusReceiver, and ServiceBusProcessor, should be registered for dependency injection as singletons (or instantiated once and shared). ServiceBusClient can be registered for dependency injection with the ServiceBusClientBuilderExtensions.
We recommend that you don't close or dispose these objects after sending or receiving each message. Closing or disposing the entity-specific objects (ServiceBusSender/Receiver/Processor) results in tearing down the link to the Service Bus service. Disposing the ServiceBusClient results in tearing down the connection to the Service Bus service.
Please see this link for complete recommendations from Service Bus team: https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-performance-improvements?tabs=net-standard-sdk-2.
QUESTION
We have configured a cluster on GKE and installed nginx-ingress. Using our ingress rule it works, but I can't make it work with HTTP/2. We set the data information on the ConfigMap but it will always fallback to http/1.1. This exact setup was running fine on DigitalOcean. Can anyone provide some guidance?
Thanks
Install Nginx-Ingress
...ANSWER
Answered 2021-May-15 at 18:11After further reproduction I've noticed that in the question there is a miss-match between the NGINX Ingress controllers
.
There are 2 similarly named Ingress
controllers:
- Github.com: NginxInc: Kubernetes Ingress - for this purpose let's name it: nginx-inc
- Github.com: Kubernetes: Ingress Nginx - for this purpose let's name it: nginx
This are 2 separate products where the differences are explained here:
Due to this Configmap
key:
use-http2: "true"
I've incorrectly assumed that we are talking about the nginx where in fact it was the nginx-inc (I've missed the link of $ helm repo add
). This field is specific to the nginx and will not work with the nginx-inc.
I've managed to find a way to enable the HTTP/2
support with the nginx-inc. Change:
- from:
use-http2: "true"
- to:
http2: "true"
More explanation can be found here:
Below part is more of a general approach to the support of HTTP/2
on GKE
with Ingress
.
A side note!
Even without the
tls
part in theYAML
manifest it's possible to useHTTPS
due to theFake Ingress Controller certificate
As pointed in the following github issue:
aledbf commented on 28 Mar 2019
NGINX does not support HTTP/1.x and HTTP/2 at the same time on a cleartext (non-TLS) port. That's the reason why it works only when HTTPS is used.
-- Github.com: Kubernetes: Ingress nginx: Issue: HTTP2 support
As stated to enable HTTP/2
you will need to have the tls part (certificate) configured in your Ingress
resource.
Here you can find the documentation to help you with the process:
I've used your setup on the GKE
version 1.20.5-gke.2000
(the Helm
part) and here is what I found.
Querying the external IP of your Ingress
controller with HTTP
request will allow you to use HTTP/1.1
.
After I've configured the certificate to use with the Ingress
resource (and domain name), I could get the response stating that I'm using HTTP/2
:
You can check it with various measures like cURL
or online HTTP/2
test sites:
curl -v -k https://DOMAIN.NAME
QUESTION
I have a client that is created from an OpenApi definition that is generated using NSwagStudio. The code that is generated has an interface and a class. It takes an HttpClient in the constructor. I set this up for the DI engine like this.
...ANSWER
Answered 2021-Apr-27 at 17:01Based on Jeremy's comment on my question, I created a new class that I derive from the generated one. It doesn't add any new functionality but it does add a constructor with strongly typed parameters. I still use the base class that handles the security part for me but now I use the DI engine in a way that is recommended by Microsoft.
QUESTION
According to issue #1793 it shouldn't be necessary to use quirks like this to bind a HttpClient in .NET 5 to a specific local ip address.
However, I'm totally overwhelmed by this topic meanwhile where .NET Core developers aren't capable since years to bring the option of chosing the outgoing ip address of a http request to .NET Core. Even the backwards compatible WebClient isn't capable of doing this in earlier .NET Core versions nor any other high level HTTP API is capable of doing this. God (or whoever) praise .NET 5, which should (hopefully?) bring such capabilities back to a modern .NET framework.
How can I configure a HttpClient
object to chose a specific local ip address for outgoing connections only using on-bord methods in .NET 5? Or is it still impossible? Bonus question: How can I configure a ClientWebSocket
object to chose a specific local ip address for the outgoing connection only using on-bord methods in .NET 5?
In my setup computers have multiple ip addresses and the services I'm accessing have quite strict rate limits based on source ip addresses.
Please refrain from telling me, that the operating system will chose the right adapter or ip address to use. Please don't send me to a 3rd party library. Yes, even if they fixed WebClient
in this regard I don't wanna use it.
Other issues of interest:
...ANSWER
Answered 2021-Mar-17 at 22:00.NET Core and therefore also .NET 5 supports various HttpHandler
s. The SocketsHttpHandler
is used to configure a HttpClient
to use the .NET internal socket implementation (not relying on WinHttp).
Since .NET 5 you can use the ConnectCallback
of the SocketsHttpHandler
to configure how the connection should be established like this:
QUESTION
In every example I've seen, including the Microsoft ones here and here, the author's explain the improvements made by IHttpClientFactory
over HttpClient
and give examples of how to use it simply out-of-the-box or in Named form. But then they all seem to mention that utilizing the Typed form really is best for its structure, usability, and more. The reasons make sense for our use case.
Though like the links provided above, there isn't a single line of code instantiating, injecting, or using IHttpClientFactory
in the involvement of creating a Typed HttpClient
(or Service as a Client). You create the Typed Client:
ANSWER
Answered 2020-Nov-11 at 01:17The framework will use ITypedHttpClientFactory
to create the HttpClient
to be injected into the typed client. This is happening under the hood when the typed client is configured like so:
QUESTION
I've been trying for the last couple of hours to find out any specific guidance on how to use http
and https
proxies respectively within meta['proxy']
. Let us consider the two urls http://app1.nu.edu.bd/
and https://www.yelp.com/
where I wish to use http
proxy and https
proxy individually as the protocol are different. For this very example we can think of using the two type of proxies 1. http proxy - 62.210.99.150:3838
and 2. https proxy - 173.212.202.65:80
.
Now, I'm trying like the following:
While using http://app1.nu.edu.bd/
:
ANSWER
Answered 2020-Nov-10 at 22:04The right way of doing it, using the requests module, should look like this:
QUESTION
Usually, it's recommended to create a wrapper implementing IHttpClient
or IHttpClientFactory
. Meanwhile, some Orleans samples show that it's ok to create HttpClient
instance on-demand and use it directly from the grain.
Questions
- Should I create Orleans service as a wrapper around
IHttpClient
or call HttpClient directly from the grain? - If I need a wrapper, would this implementation suffice?
- What's the difference between
GrainService
andGrainServiceClient
?
ANSWER
Answered 2020-Sep-30 at 23:36You should follow standard best-practices when using HttpClient
within Orleans. The sample is creating a new one for simplicity of exposition, not as an indicator of best practices. A PR to change the sample documentation to use IHttpClientFactory
(for example) would likely be accepted.
You do not need a GrainService
to call into HTTP services from your grain: you can inject the required dependencies (IHttpClientFactory
or your typed client) and call HTTP services directly from grain code.
Regarding the question on the purpose of GrainService
and GrainServiceClient
, GrainService
is a special service which is intended to be accessed from grain code. GrainServices
are instantiated on every node in the cluster and each one is given responsibility over a set of grains. As an example, reminders (persistent timers) in Orleans are implemented using GrainService
s. The LocalReminderService
on each node takes responsibility for a set of grains and will wake those grains up when their reminders are due. GrainServiceClient
is used by grains to access the GrainService
instance which is responsible for the calling grain. The documentation explains more here: https://dotnet.github.io/orleans/Documentation/grains/grainservices.html
I would avoid using GrainService
unless you find a use case which it fits closely.
QUESTION
I am working on a download manager in C# integrated Chrome. When I try to download from google drive the response doesn't return a Content-Length and this means -1 (Unknown). But IDM gets the correct size and I couldn't understand how. Anyone knows please help!
The file in this url: https://drive.google.com/uc?export=download&confirm=-wOm&id=1gC_fEKIlv9oaLQUAKH4GvRvAIqhDgAbz
Response headers:
...ANSWER
Answered 2020-Aug-15 at 01:30You have not posted your code to review your issue. However, you should consider two things in Google Drive requests. First you should use Google APIs to process the requests. This means, you'll have to have an authenticated requests through OAuth2 protocols.
If you're using their NuGets
, then you can simply use the DriveService
to get the file size.
Community Discussions, Code Snippets contain sources that include Stack Exchange Network
Vulnerabilities
No vulnerabilities reported
Install use-http
Support
Reuse Trending Solutions
Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items
Find more librariesStay Updated
Subscribe to our newsletter for trending solutions and developer bootcamps
Share this Page