Here is my setup. I have most code using .bodyToMono via webflux. However, in the event of a parse error, Webclient has no good way to get the original body that caused the issue. In this example, assume 2xx response, however instead of returning properly formatted json, something else came, maybe a html or plain text etc. I would like to log the value of this malformed response and then return it in some way to a calling client. The only path I can see within Webflux to do this would be to always convert the body to a string near the top of the chain and attempt to manually deserialize via object mapper. In my non-parseable scenario, relying on the webflux apis only show me the tokens the parsing failed on, not the entire response. For observability, traceability etc this seems like kind of a fatal flaw. Is there another path to this goal I'm missing?
For Spring Boot Webclient, what is the preferred mechanism to log non-parseable responses?
16 views Asked by Core At
1
There are 1 answers
Related Questions in SPRING-WEBFLUX
- How do you retrieve body from ClientResponse?
- WebClient apears to add headers to request on its own. Where does it happen?
- How to build a reactive application using React Query and Spring Webflux
- How can I make asserts on outbound HTTP requests?
- Spring Security Reactive OAuth2 Client: Options for Customizing Refresh Endpoint
- Spring ReactiveMongoRepository function with nested reactive operations timing out
- how to avoid handling `AbortedException` with Spring WebFlux while handling for generic Exceptions?
- Default /logout does not work if /login is customised spring security 5.7.11
- CompletableFuture: thenAccept called but whenComplete is not
- WebFlux is unable to decode Chunked requests properly
- getting error for Macbook Air M1 "Unable to load io.netty.resolver.dns.macos.MacOSDnsServerAddressStreamProvider, fallback to system defaults
- For Spring Boot Webclient, what is the preferred mechanism to log non-parseable responses?
- Should I use concatMap in reactive for DB call?
- Create webclient object based on changes in BaseURL & scope
- Reactive Spring Security is always creating the Session in redis even when NoOpServerSecurityContextRepository specified for securityContextRepository
Related Questions in PROJECT-REACTOR
- Spring ReactiveMongoRepository function with nested reactive operations timing out
- Blocking call in @KafkaListener spring boot
- Why would using writeValue stop a Flux but writing to a temporary value then printing it allow it to work?
- How to avoid byte[] for download of 4GB file
- Is there a way to apply backpressure to the whole pipeline of fluxes?
- For Spring Boot Webclient, what is the preferred mechanism to log non-parseable responses?
- Consume webClient Flux<DataBuffer> directly by apache camel route
- redis threaded io polling mode
- How to achieve both in-memory and database user authentication within project reactor with springboot3.2.2 (webflux)
- Enhancing mono with information for error handling
- Reactive pipeline with ComletableFuture, timeout, backpressure
- First subscriber to hot publisher doesn't get any elements, second subscriber consumes each element twice. Why?
- Why `Flux.generate()` is never requested?
- Spring WebFlux Security Context is Empty After Setting with ReactiveSecurityContextHolder
- Reactive core webclient api
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Popular Tags
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
You should add some code snippet and throwable to see what exactly is going on.
In general, the way I handle it is as you mentioned: first
.bodyToMono(String.class)and then create the JSON object. If exception is thrown you can immediately log the whole string body like this:Have you tried something like this?
Note: for observability/traceability you can always use other patterns, like metrics, trace-request-ids etc. Just logging is not enough for real time services