'How to provide own follow redirect strategy?

I'm interacting with a webservice which on POST request answers with 302 containing address to created resource in the location header. To access the created resource I've to make a GET request to the provided location.
I want reactor.netty.http.client.HttpClient to handle the redirect flow for me. This is my configuration:

import reactor.netty.http.client.HttpClient;
...
...
var nettyHttpClient = HttpClient.create()
            .compress(true)
            .followRedirect(true);

With the above configuration, the client will use same HTTP method for the redirected request as it did for the first request.

Given my use-case, is there a way to provide my own redirect strategy to the client for 3xx responses?



Solution 1:[1]

You could handle raw response and handle http status 302 with custom logic

var response = nettyHttpClient.post()
    .uri("/test")
    .response()
    .flatMap(res -> {
       if (res.status().equals(HttpResponseStatus.FOUND)) {
         return nettyHttpClient.get()
             .uri(res.responseHeaders().get(HttpHeaders.LOCATION))
             .response();
       }

       return Mono.just(res);
    });

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Alex