Question: HttpClientFactory custom http message handlers
I maintainer di solito rispondono entro 1 giorno
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 25/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Ferma
- Stack tecnologico
- csharp
- Ambito
- backend-api-design
Direzione di ricerca
Inizia leggendo HttpClientFactory.CreateHandler(CreateHttpClientArgs args) e l’utilizzo di IHttpMessageHandlerFactory mostrato nell’issue, quindi esamina la registrazione esistente dell’SDK e il flusso di inizializzazione. Il lavoro è completato quando è possibile riutilizzare più handler risolti da DI senza perdere gzip, la configurazione di user-agent o altri inizializzatori dell’SDK; non viene indicato alcun percorso di file o test.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Hello,
do you have an example, how we can extend http client factory to add multiple http message handlers and keep current implementation of google http client factory? In essence, I have multiple handlers covering cross cutting concerns (traces, metrics, logs) which I am using with other typed http clients, I would like them to be reused. Ideally it would the best to resolve them from DI.
I have found similar issue in other library which uses google http client factory ref: https://github.com/googleapis/google-api-dotnet-client/issues/1756, however some of the implementation is missing in current.
For now I have implemented as such (since I could not find any other possible way)
// configure handlers, so I could resolve through IHttpMessageHandlerFactory
builder.Services.AddHttpClient("Firebase")
.ConfigurePrimaryHttpMessageHandler(_ => // some proxy configuration)
.AddHttpMessageHandler<CorrelationIdHandler>()
.AddHttpMessageHandler<LoggingHandler>()
.AddHttpMessageHandler<TracingHandler>();
// override google http client factory
public class FirebaseHttpClientFactory : HttpClientFactory
{
private readonly IHttpMessageHandlerFactory _httpMessageHandlerFactory;
public FirebaseHttpClientFactory(IHttpMessageHandlerFactory httpMessageHandlerFactory)
{
_httpMessageHandlerFactory = httpMessageHandlerFactory
}
protected override HttpMessageHandler CreateHandler(CreateHttpClientArgs args)
{
return _httpMessageHandlerFactory.CreateHandler("Firebase");
}
}
// register firebase messaging
builder.Services.AddSingleton(sp => return FirebaseMessaging.GetMessaging(FirebaseApp.Create(new AppOptions{
Credential = // load from file
HttpClientFactory = new FirebaseHttpClientFactory(sp.GetRequiredService<IHttpMessageHandlerFactory>())
}));
By doing this, it kinda works, however I loose a lot of functionality from SDK itself, like gzip, user agent name setter and other initializers.
Can you please confirm that this is the only way currently how to achieve this and whether this will work?
I can see that other google library ref: https://github.com/googleapis/google-api-dotnet-client/issues/1756 already decoupled itself from accepting implementation of google.HttpClientFactory to interface (what let's to use DI and pass multiple handlers).
Are you planning to make similar update to this library? If yes and you need help, please let me know :)
- Lingua principale
- C#
- Stelle
- 408
- Fork
- 147
- Merge medio
- 1g 3h
- PR unite (30g)
- 10
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di firebase/firebase-admin-dotnet
-
AbstractFirebaseAuth.cs has a typo (accound/account)Forse di nuovo libera Una pull request per questa issue è stata chiusa senza essere unita. Apertaneeds-triage
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 72/100
firebase/firebase-admin-dotnet#334 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
GetProjectId returns null on Compute Engine / Cloud Run with application default credentialsForse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 78/100
firebase/firebase-admin-dotnet#588 ·
I maintainer di solito rispondono entro 1 giorno
-
Sending FCM notification with Fids Return NotRegisteredForse di nuovo libera @yvonnep165 l’ha presa 77 giorni fa e non c’è nessuna pull request aperta. Aperta
firebase/firebase-admin-dotnet#534 · 5 commenti · 1 reazione · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
Sending MulticastMessage does not work after replacing Tokens with FidsForse di nuovo libera @Doris-Ge l’ha presa 105 giorni fa e non c’è nessuna pull request aperta. Apertaapi: messaging
firebase/firebase-admin-dotnet#530 · 2 commenti · 2 assegnatari ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
firebase/firebase-admin-dotnet#526 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di firebase/firebase-admin-dotnet
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
RadicalCSG/com.chisel#192 ·
I maintainer di solito rispondono entro 1 giorno
-
area-testing p2-post-1.0 technical-debt
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
Bug good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
RazorConsole/RazorConsole#447 ·
I maintainer di solito rispondono entro 1 giorno
-
CloudEventsMiddleware decodes JSON string data for `+json` content typesForse già presa @RaphaelFakhri l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
dapr/dotnet-sdk#1964 ·
I maintainer di solito rispondono entro 1 giorno
-
bug P3
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno