diff --git a/src/main/java/org/springframework/hateoas/server/reactive/WebFluxLinkBuilder.java b/src/main/java/org/springframework/hateoas/server/reactive/WebFluxLinkBuilder.java index 7e3e75c7..baee60aa 100644 --- a/src/main/java/org/springframework/hateoas/server/reactive/WebFluxLinkBuilder.java +++ b/src/main/java/org/springframework/hateoas/server/reactive/WebFluxLinkBuilder.java @@ -116,6 +116,20 @@ public class WebFluxLinkBuilder extends TemplateVariableAwareLinkBuilderSupport< private final Mono builder; + /** + * Creates a new {@link WebFluxBuilder} appending the given path to the currently to be built link. + * + * @param path must not be {@literal null}. + * @return + * @since 1.1 + */ + public WebFluxBuilder slash(String path) { + + Assert.notNull(path, "Path must not be null!"); + + return new WebFluxBuilder(builder.map(it -> it.slash(path))); + } + /** * Creates a new {@link WebFluxLink} for the {@link Link} with the given {@link LinkRelation} * diff --git a/src/test/java/org/springframework/hateoas/server/reactive/WebFluxLinkBuilderTest.java b/src/test/java/org/springframework/hateoas/server/reactive/WebFluxLinkBuilderTest.java index 8205d37b..4900e7de 100644 --- a/src/test/java/org/springframework/hateoas/server/reactive/WebFluxLinkBuilderTest.java +++ b/src/test/java/org/springframework/hateoas/server/reactive/WebFluxLinkBuilderTest.java @@ -187,7 +187,7 @@ class WebFluxLinkBuilderTest { }); } - @Test + @Test // #1150 void considersContextPath() { MockServerHttpRequest request = MockServerHttpRequest.get("http://localhost:8080/context/api") // @@ -201,6 +201,19 @@ class WebFluxLinkBuilderTest { }); } + @Test // #1152 + void allowsAppendingPathSegments() { + + MockServerHttpRequest request = MockServerHttpRequest.get("http://localhost:8080/api") // + .build(); + + WebFluxLink link = linkTo(methodOn(TestController.class).deep()).slash("foo").withSelfRel(); + + verify(request, link, result -> { + assertThat(result.getHref()).endsWith("/api/employees/foo"); + }); + } + private void verify(@Nullable MockServerHttpRequest request, WebFluxLink link, Consumer verifications) { Mono mono = link.toMono();