# Introduction This sample demonstrates how you can send an HTTP request to a *Spring Integration* HTTP service while utilizing *Spring Integration*'s HTTP Path usage. This sample also uses [Spring Security][] for HTTP Basic authentication. With the HTTP Path facility, the client program can send requests with URL Variables. The sample consists of two parts: * Client and * Server The *Client* program is provided as a [JUnit][] test: * RestHttpClientTest This test-case can be used to test the HTTP Path usage. It uses Spring's [RestTemplate][] to assemble and send HTTP requests. The *Server*, on the other hand, is using Spring Integration's HTTP Endpoint configuration. The provided project itself is a web project and you can build the project using [Gradle][] and deploy the resulting war under `target/rest-http-*.war` to Servlet Containers such as [Jetty][] or [Apache Tomcat][]: $ gradlew :rest-http:build # To run this sample 1. Deploy the project - If you are using [Spring Tool Suite][] (STS) and project is imported as Eclipse project in your workspace you can just execute 'Run on Server' - You can also run **gradlew :rest-http:build** and generate the WAR file that you can deploy to Servlet Containers 2. Run the simple JUnit Test: **org.springframework.integration.samples.rest.RestHttpClientTest** - You may change the URI Variable value in the test to see different results. For example, when you give 0 as the URL Variable's value in the test, then you should see the following output from the server: 14:01:34,337 INFO main rest.RestHttpClientTest:95 - The employee list size :2 14:01:34,353 INFO main rest.RestHttpClientTest:101 - 1 John Doe 2 Jane Doe 0 Success 14:01:34,556 INFO main rest.RestHttpClientTest:121 - Return Status :[0] 14:01:34,556 INFO main rest.RestHttpClientTest:122 - Return Status Message :[Success] {"employee":[{"employeeId":1,"fname":"John","lname":"Doe"},{"employeeId":2,"fname":"Jane","lname":"Doe"}],"returnStatus":"0","returnStatusMsg":"Success"} # The REST API If you like to access the server's REST API yourself, please use the following URLs: ## Return All Employees http://localhost:8080/rest-http/services/employee/0/search ## Return Specific Employees http://localhost:8080/rest-http/services/employee/{employeeId}/search For example using [cURL][] you can list the details for a specific user with: $ curl -u SPRING:spring http://localhost:8080/rest-http/services/employee/1/search This should produce output similar to this: 1JohnDoe0Success ## Security The REST Endpoint is using [Spring Security][]. The security credentials are: * Username: SPRING * Password: spring They are stored in `src/main/resources/users.properties`. [Apache Tomcat]: https://tomcat.apache.org/ [cURL]: https://en.wikipedia.org/wiki/CURL [Jetty]: https://www.eclipse.org/jetty/ [JUnit]: https://junit.org/ [Gradle]: https://www.gradle.org [RestTemplate]: https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/client/RestTemplate.html [Spring Security]: https://www.springsource.org/spring-security [Spring Tool Suite]: https://www.springsource.org/sts