मैं एकाधिक शीर्षलेखों को डिफ़ॉल्ट हेडर() में डालने की कोशिश कर रहा हूं, लेकिन मुझे नहीं पता कि createHeaders() विधि की वापसी से उपभोक्ता ऑब्जेक्ट कैसे बनाया जाए

this.someWebClient = WebClient.builder()
        .baseUrl(someConfiguration.getApiUrl())
        .clientConnector(buildTimeoutConnector())
        .defaultHeaders(????) // Consumer<HttpHeaders>
        .build();

मैं अपना हेडर इस तरह बना सकता हूं:

private HttpHeaders createHeaders(String token) {
    HttpHeaders headers = new HttpHeaders();
    headers.add(HttpHeaders.ACCEPT, V1_PUBLIC);
    headers.add(HttpHeaders.HOST, "abc");
    headers.add(HttpHeaders.AUTHORIZATION, "Bearer " + token);
    return headers;
}

लेकिन इसे उपभोक्ता में कैसे लपेटें?

2
ore ore 28 जुलाई 2020, 17:16

2 जवाब

सबसे बढ़िया उत्तर

स्पष्ट रूप से विधि दस्तावेज़ कहता है कि इसे किसी प्रकार के Consumer की आवश्यकता है। इसलिए आप एक अनाम वर्ग बना सकते हैं जो Consumer इंटरफ़ेस को लागू कर रहा है या इस तरह लैम्ब्डा एक्सप्रेशन का उपयोग कर सकते हैं:

  1. अनाम आंतरिक वर्ग का उपयोग करना:
this.someWebClient = WebClient.builder()
        .baseUrl(someConfiguration.getApiUrl())
        .clientConnector(buildTimeoutConnector())
        .defaultHeaders(new Consumer<HttpHeaders>() {
          @Override
          public void accept(HttpHeaders httpHeaders) {
            httpHeaders.addAll(createHeaders(token));
          }
        })
        .build();
  1. लैम्ब्डा का उपयोग करना:
this.someWebClient = WebClient.builder()
        .baseUrl(someConfiguration.getApiUrl())
        .clientConnector(buildTimeoutConnector())
        .defaultHeaders(httpHeaders -> {
          httpHeaders.addAll(createHeaders(token));
        })
        .build();
2
Abhinaba Chakraborty 28 जुलाई 2020, 20:09

आप इसे इस तरह कर सकते हैं:

WebClient client3 = WebClient
      .builder()
        .baseUrl(someConfiguration.getApiUrl())
        .clientConnector(buildTimeoutConnector())
        .defaultHeader(HttpHeaders.ACCEPT, V1_PUBLIC) 
        .defaultHeader(HttpHeaders.HOST, "abc") 
        .defaultHeader(HttpHeaders.AUTHORIZATION, "Bearer " + token) 
      .build();
0
tashkhisi 28 जुलाई 2020, 18:45