Files
spring-functions-catalog/function/http-request-function
Daniel Frey 724c4ace5f Refactor hardcoded versions in functions submodule branches
This is so they can be updated in a minimal amount of places and leverage the maven hierarchy to propagate them where appropriate.
While working with SNAPSHOT releases of Spring Boot, Spring Integration, and Spring Cloud, it required touching every pom.xml file
in order to reflect the use of the SNAPSHOT. After this change, it will only be required to change the property in the top
functions pom.xml and the versions will reflect to all submodules.

Maven introduced the ability use a key property, revision to propagate this information to the <parent> declarations in each pom.

This was enabled in Maven 3.5+
https://maven.apache.org/maven-ci-friendly.html
2020-10-13 15:15:59 -04:00
..
2020-08-13 13:27:15 -04:00

# HTTP Request Function

This module provides an HTTP request function that can be reused and composed in other applications.
The `Function` uses the reactive `WebClient` from `Spring WebFlux` and is implemented as a `java.util.function.Function`.
This function gives you a reactive stream of `ResponseEntity` given a stream of request messages as the function a signature of `Function<Flux<Message<?>,Flux<ResponseEntity>>`.
Users have to subscribe to the returned `Flux` to receive the data.

## Beans for injection

You can import the `HttpRequestFunction` configuration in a Spring Boot application and then inject the following bean.

`httpRequestFunction`

You may inject this as `HttpRequestFunction`.

You can use `httpRequestFunction` as a qualifier when injecting.

Once injected, you can use the `apply` method of the `Function` to invoke it and then subscribe to the returned `Flux`.

## Configuration Options

All configuration properties are prefixed with `http.request`.

For more information on the various options available, please see link:src/main/java/org/springframework/cloud/fn/http/request/HttpRequestFunctionProperties.java[HttpRequestFunctionProperties.java]

## Examples

See this link:src/test/java/org/springframework/cloud/fn/http/request/HttpRequestFunctionApplicationTests.java[test suite] for examples of how this function is used.

## Other usage

See this link:../../../applications/processor/http-request-processor/README.adoc[README] where this function is used to create a Spring Cloud Stream application to process HTTP requests.