# 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