# service-proxy
**Repository Path**: heibaifu/service-proxy
## Basic Information
- **Project Name**: service-proxy
- **Description**: API gateway for REST and SOAP written in Java.
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2021-01-29
- **Last Updated**: 2022-04-08
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
Membrane Service Proxy
======================
[](https://github.com/membrane/service-proxy/releases/latest)
[](https://raw.githubusercontent.com/membrane/service-proxy/master/distribution/router/LICENSE.txt)
Reverse HTTP proxy (framework) written in Java, that can be used
* as an API gateway
* as a security proxy
* for HTTP based integration
* as a WebSockets and STOMP router
Get Started
-----------
Download the [binary](https://github.com/membrane/service-proxy/releases).
Unpack.
Start `service-proxy.sh` or `service-proxy.bat`.
Have a look at the main configuration file `conf/proxies.xml`. Changes to this file are instantly deployed.
Run the samples in the examples folder, follow the [REST](https://www.membrane-soa.org/service-proxy-doc/4.4/rest-quickstart.htm) or [SOAP](https://www.membrane-soa.org/service-proxy-doc/4.4/soap-quickstart.htm) tutorials, see the [Documentation](https://www.membrane-soa.org/service-proxy-doc/) or the [FAQ](https://github.com/membrane/service-proxy/wiki/Membrane-Service-Proxy-FAQ).
Samples
-------
### REST
Routing requests from localhost:80 to localhost:8080 :
```xml
```
Routing only requests with path /foo :
```xml
/foo
```
### SOAP
SOAP proxies configure themselves by analysing WSDL:
```xml
```
Add features like logging or XML Schema validation against a WSDL document:
```xml
```
Limit the number of requests in a given time frame:
```xml
```
Rewrite URLs:
```xml
```
Monitor HTTP traffic:
```xml
```
### Monitoring and manipulation
Dynamically manipulate and monitor messages with Groovy and JavaScript (Nashorn):
```xml
exc.request.header.add("X-Groovy", "Hello from Groovy")
CONTINUE
```
```xml
exc.getRequest().getHeader().add("X-Javascript", "Hello from JavaScript");
CONTINUE;
```
Route and intercept WebSocket traffic:
```xml
```
(_Find an example on [membrane-soa.org](http://www.membrane-soa.org/service-proxy-doc/4.4/websocket-routing-intercepting.htm)_)
### Security
Use the widely adopted OAuth2/OpenID Framework to secure endpoints:
```xml
def oauth2 = exc.properties.oauth2
exc.request.header.setValue('X-EMAIL',oauth2.userinfo.email)
CONTINUE
```
(_Find an example on [membrane-soa.org](http://www.membrane-soa.org/service-proxy-doc/4.4/oauth2-openid.htm)_)
Operate your own OAuth2/OpenID AuthorizationServer/Identity Provider:
```xml
```
(_Find an example on [membrane-soa.org](http://www.membrane-soa.org/service-proxy-doc/4.4/oauth2-code-flow-example.htm)_)
Secure an endpoint with basic authentication:
```xml
```
Route to SSL/TLS secured endpoints:
```xml
```
Secure endpoints with SSL/TLS:
```xml
```
Limit the number of incoming requests:
```xml
```
### Clustering
Distribute your workload to multiple nodes:
```xml
```
See [configuration reference](https://www.membrane-soa.org/service-proxy-doc/4.4/configuration/reference/) for much more.