Allow actuator endpoint to have responses with custom HTTP statuses
Fixes gh-24123
This commit is contained in:
@@ -361,8 +361,7 @@ public abstract class AbstractWebFluxEndpointHandlerMapping extends RequestMappi
|
||||
return new ResponseEntity<>(response, HttpStatus.OK);
|
||||
}
|
||||
WebEndpointResponse<?> webEndpointResponse = (WebEndpointResponse<?>) response;
|
||||
return new ResponseEntity<>(webEndpointResponse.getBody(),
|
||||
HttpStatus.valueOf(webEndpointResponse.getStatus()));
|
||||
return ResponseEntity.status(webEndpointResponse.getStatus()).body(webEndpointResponse.getBody());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -367,7 +367,7 @@ public abstract class AbstractWebMvcEndpointHandlerMapping extends RequestMappin
|
||||
return result;
|
||||
}
|
||||
WebEndpointResponse<?> response = (WebEndpointResponse<?>) result;
|
||||
return new ResponseEntity<Object>(response.getBody(), HttpStatus.valueOf(response.getStatus()));
|
||||
return ResponseEntity.status(response.getStatus()).body(response.getBody());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2012-2019 the original author or authors.
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -379,6 +379,12 @@ public abstract class AbstractWebEndpointIntegrationTests<T extends Configurable
|
||||
.expectStatus().isOk().expectBody(String.class).isEqualTo("ACTUATOR: true"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void endpointCanProduceAResponseWithACustomStatus() {
|
||||
load((context) -> context.register(CustomResponseStatusEndpointConfiguration.class),
|
||||
(client) -> client.get().uri("/customstatus").exchange().expectStatus().isEqualTo(234));
|
||||
}
|
||||
|
||||
protected abstract int getPort(T context);
|
||||
|
||||
protected void validateErrorBody(WebTestClient.BodyContentSpec body, HttpStatus status, String path,
|
||||
@@ -621,6 +627,17 @@ public abstract class AbstractWebEndpointIntegrationTests<T extends Configurable
|
||||
|
||||
}
|
||||
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
@Import(BaseConfiguration.class)
|
||||
static class CustomResponseStatusEndpointConfiguration {
|
||||
|
||||
@Bean
|
||||
CustomResponseStatusEndpoint customResponseStatusEndpoint() {
|
||||
return new CustomResponseStatusEndpoint();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Endpoint(id = "test")
|
||||
static class TestEndpoint {
|
||||
|
||||
@@ -847,6 +864,16 @@ public abstract class AbstractWebEndpointIntegrationTests<T extends Configurable
|
||||
|
||||
}
|
||||
|
||||
@Endpoint(id = "customstatus")
|
||||
static class CustomResponseStatusEndpoint {
|
||||
|
||||
@ReadOperation
|
||||
WebEndpointResponse<String> read() {
|
||||
return new WebEndpointResponse<>("Custom status", 234);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
interface EndpointDelegate {
|
||||
|
||||
void write();
|
||||
|
||||
Reference in New Issue
Block a user