@Override public <T> T body(BodyExtractor<T, ? super ServerHttpRequest> extractor) { return this.delegate.body(extractor); }
@Override public <T> T body(BodyExtractor<T, ? super ServerHttpRequest> extractor, Map<String, Object> hints) { return this.delegate.body(extractor, hints); }
@Override public <T> T body(BodyExtractor<T, ? super ServerHttpRequest> extractor) { return this.request.body(extractor); }
@Override public <T> T body(BodyExtractor<T, ? super ServerHttpRequest> extractor, Map<String, Object> hints) { return this.request.body(extractor, hints); }
@Test public void bodyExtractor() { Mono<String> result = Mono.just("foo"); BodyExtractor<Mono<String>, ReactiveHttpInputMessage> extractor = BodyExtractors.toMono(String.class); when(mockRequest.body(extractor)).thenReturn(result); assertSame(result, wrapper.body(extractor)); }
public Mono<ServerResponse> postMono(ServerRequest request) { Mono<Person> personMono = request.body(toMono(Person.class)); return ServerResponse.ok().body(fromPublisher(personMono, Person.class)); }
public Mono<ServerResponse> parts(ServerRequest request) { return request.body(BodyExtractors.toParts()).collectList() .flatMap(parts -> { try { assertEquals(2, parts.size()); assertEquals("foo.txt", ((FilePart) parts.get(0)).filename()); assertEquals("bar", ((FormFieldPart) parts.get(1)).value()); } catch(Exception e) { return Mono.error(e); } return ServerResponse.ok().build(); }); } }
public Mono<ServerResponse> multipartData(ServerRequest request) { return request .body(BodyExtractors.toMultipartData()) .flatMap(map -> { Map<String, Part> parts = map.toSingleValueMap(); try { assertEquals(2, parts.size()); assertEquals("foo.txt", ((FilePart) parts.get("fooPart")).filename()); assertEquals("bar", ((FormFieldPart) parts.get("barPart")).value()); } catch(Exception e) { return Mono.error(e); } return ServerResponse.ok().build(); }); }
@Override public <T> T body(BodyExtractor<T, ? super ServerHttpRequest> extractor, Map<String, Object> hints) { return this.request.body(extractor, hints); }
@Override public <T> T body(BodyExtractor<T, ? super ServerHttpRequest> extractor, Map<String, Object> hints) { return this.request.body(extractor, hints); }
@Override public <T> T body(BodyExtractor<T, ? super ServerHttpRequest> extractor) { return this.request.body(extractor); }
@Override public <T> T body(BodyExtractor<T, ? super ServerHttpRequest> extractor) { return this.request.body(extractor); }
@Test public void multipartUpload() throws Exception { MultiValueMap<String, Object> multipartData = new LinkedMultiValueMap<>(); multipartData.add("file", new byte[] { 1, 2, 3, 4 }); ExchangeResult result = WebTestClient .bindToRouterFunction(RouterFunctions.route(POST("/foo"), (req) -> { req.body(BodyExtractors.toMultipartData()).block(); return null; })).configureClient().baseUrl("http://localhost").build().post() .uri("/foo").body(BodyInserters.fromMultipartData(multipartData)) .exchange().expectBody().returnResult(); OperationRequest request = this.converter.convert(result); assertThat(request.getUri()).isEqualTo(URI.create("http://localhost/foo")); assertThat(request.getMethod()).isEqualTo(HttpMethod.POST); assertThat(request.getParts()).hasSize(1); OperationRequestPart part = request.getParts().iterator().next(); assertThat(part.getName()).isEqualTo("file"); assertThat(part.getSubmittedFileName()).isNull(); assertThat(part.getHeaders()).hasSize(2); assertThat(part.getHeaders().getContentLength()).isEqualTo(4L); assertThat(part.getHeaders().getContentDisposition().getName()).isEqualTo("file"); assertThat(part.getContent()).containsExactly(1, 2, 3, 4); }
ExchangeResult result = WebTestClient .bindToRouterFunction(RouterFunctions.route(POST("/foo"), (req) -> { req.body(BodyExtractors.toMultipartData()).block(); return null; })).configureClient().baseUrl("http://localhost").build().post()
@Test public void postRequestWithQueryStringParameters() throws Exception { ExchangeResult result = WebTestClient .bindToRouterFunction(RouterFunctions.route(POST("/foo"), (req) -> { req.body(BodyExtractors.toFormData()).block(); return null; })).configureClient().baseUrl("http://localhost").build().post() .uri(URI.create("http://localhost/foo?a=alpha&a=apple&b=br%26vo")) .exchange().expectBody().returnResult(); OperationRequest request = this.converter.convert(result); assertThat(request.getUri()) .isEqualTo(URI.create("http://localhost/foo?a=alpha&a=apple&b=br%26vo")); assertThat(request.getMethod()).isEqualTo(HttpMethod.POST); assertThat(request.getParameters()).hasSize(2); assertThat(request.getParameters()).containsEntry("a", Arrays.asList("alpha", "apple")); assertThat(request.getParameters()).containsEntry("b", Arrays.asList("br&vo")); }
@Test public void postRequestWithQueryStringAndFormDataParameters() throws Exception { MultiValueMap<String, String> parameters = new LinkedMultiValueMap<>(); parameters.addAll("a", Arrays.asList("apple")); ExchangeResult result = WebTestClient .bindToRouterFunction(RouterFunctions.route(POST("/foo"), (req) -> { req.body(BodyExtractors.toFormData()).block(); return null; })).configureClient().baseUrl("http://localhost").build().post() .uri(URI.create("http://localhost/foo?a=alpha&b=br%26vo")) .body(BodyInserters.fromFormData(parameters)).exchange().expectBody() .returnResult(); OperationRequest request = this.converter.convert(result); assertThat(request.getUri()) .isEqualTo(URI.create("http://localhost/foo?a=alpha&b=br%26vo")); assertThat(request.getMethod()).isEqualTo(HttpMethod.POST); assertThat(request.getParameters()).hasSize(2); assertThat(request.getParameters()).containsEntry("a", Arrays.asList("alpha", "apple")); assertThat(request.getParameters()).containsEntry("b", Arrays.asList("br&vo")); }
@Test public void postRequestWithFormDataParameters() throws Exception { MultiValueMap<String, String> parameters = new LinkedMultiValueMap<>(); parameters.addAll("a", Arrays.asList("alpha", "apple")); parameters.addAll("b", Arrays.asList("br&vo")); ExchangeResult result = WebTestClient .bindToRouterFunction(RouterFunctions.route(POST("/foo"), (req) -> { req.body(BodyExtractors.toFormData()).block(); return null; })).configureClient().baseUrl("http://localhost").build().post() .uri("/foo").body(BodyInserters.fromFormData(parameters)).exchange() .expectBody().returnResult(); OperationRequest request = this.converter.convert(result); assertThat(request.getUri()).isEqualTo(URI.create("http://localhost/foo")); assertThat(request.getMethod()).isEqualTo(HttpMethod.POST); assertThat(request.getParameters()).hasSize(2); assertThat(request.getParameters()).containsEntry("a", Arrays.asList("alpha", "apple")); assertThat(request.getParameters()).containsEntry("b", Arrays.asList("br&vo")); }
public Mono<ServerResponse> create(ServerRequest req) { return req.body(BodyExtractors.toMono(Post.class)) .flatMap(post -> this.posts.save(post)) .flatMap(p -> ServerResponse.created(URI.create("/posts/" + p.getId())).build()); }
public Mono<ServerResponse> create(ServerRequest req) { return req.body(BodyExtractors.toMono(Post.class)) .flatMap(post -> this.posts.save(post)) .flatMap(p -> created(URI.create("/posts/" + p.getId())).build()); }
@Before public void setUp() { RouterFunction<ServerResponse> route = RouterFunctions .route(RequestPredicates.GET("/"), (request) -> ServerResponse.status(HttpStatus.OK) .body(fromObject(new Person("Jane", "Doe")))) .andRoute(RequestPredicates.GET("/{foo}/{bar}"), (request) -> ServerResponse.status(HttpStatus.OK) .body(fromObject(new Person("Jane", "Doe")))) .andRoute(RequestPredicates.POST("/upload"), (request) -> request.body(BodyExtractors.toMultipartData()) .map((parts) -> ServerResponse.status(HttpStatus.OK) .build().block())) .andRoute(RequestPredicates.GET("/set-cookie"), (request) -> ServerResponse.ok() .cookie(ResponseCookie.from("name", "value") .domain("localhost").httpOnly(true).build()) .build()); this.webTestClient = WebTestClient.bindToRouterFunction(route).configureClient() .baseUrl("https://api.example.com") .filter(documentationConfiguration(this.restDocumentation)).build(); }