From 5b7db23aaacbb08a8242b1a77bd39bc19139526c Mon Sep 17 00:00:00 2001 From: Alex Shpak Date: Sun, 30 Sep 2018 01:31:24 +0200 Subject: Add exampleSite --- exampleSite/content/docs/rx-jersey-client.md | 60 ++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 exampleSite/content/docs/rx-jersey-client.md (limited to 'exampleSite/content/docs/rx-jersey-client.md') diff --git a/exampleSite/content/docs/rx-jersey-client.md b/exampleSite/content/docs/rx-jersey-client.md new file mode 100644 index 0000000..b0e2793 --- /dev/null +++ b/exampleSite/content/docs/rx-jersey-client.md @@ -0,0 +1,60 @@ +## RxJersey Proxy Client + +Proxy client provides convenient way to call resources without constructing request. Also it allows to reuse resource interfaces between microservices. + +In order to enable RxJava in proxy client register Jersey feature +```java +RxJerseyClientFeature rxJerseyClientFeature = new RxJerseyClientFeature() + .register(client); //should be non-blocking client implementation +resourceConfig.register(rxJerseyClientFeature); +``` +Default client with Grizzly connector will be used if not provided + + +## Remote resource injection +You can inject proxy client with `@Remote` annotation, in addition you can inject `WebTarget` or `RxWebTarget` +```java +@Path("/example/") +public class GithubResource { + + @Remote("https://api.github.com/") + private GithubApi githubApi; + + @Remote("https://api.github.com/") + private WebTarget webTarget; + + @GET + @Path("github") + public Single getRepository() { + return githubApi.getRepository("alex-shpak", "rx-jersey").toSingle(); + } +} +``` + +## Manual proxy client creation +You can use `WebResourceFactory` from `net.winterly.rxjersey.client` package in order to create proxy client + +#### RxJava +```java +WebResourceFactory.newResource( + ResourceInterface.class, + rxWebTarget, + new ObservableClientMethodInvoker() +); +``` +#### RxJava 2 +```java +WebResourceFactory.newResource( + ResourceInterface.class, + webTarget, + new FlowableClientMethodInvoker() +); +``` + +## Url resolving +Below is example of URL merging based on `@Remote` annotation value + +| Annotation Value | Jersey Context Path | Result URL | +| ----------------------------- | --------------------------- | ---------------------------- | +| @Remote("http://example.com") | http://baseurl.com/resource | http://example.com/ | +| @Remote("/resource/") | http://baseurl.com/some | http://baseurl.com/resource/ | \ No newline at end of file -- cgit v1.2.3