By default, JSON support is provided for HTTP request and response bodies.
Other languages can be specified using any of the following builder methods:
- {@link oajrc.RestClient.Builder}
- {@link oajrc.RestClient.Builder#json() json()}
- {@link oajrc.RestClient.Builder#json5() json5()}
- {@link oajrc.RestClient.Builder#xml() xml()}
- {@link oajrc.RestClient.Builder#html() html()}
- {@link oajrc.RestClient.Builder#plainText() plainText()}
- {@link oajrc.RestClient.Builder#msgPack() msgPack()}
- {@link oajrc.RestClient.Builder#uon() uon()}
- {@link oajrc.RestClient.Builder#urlEnc() urlEnc()}
- {@link oajrc.RestClient.Builder#openApi() openApi()}
| // Create a basic REST client with JSON 5 support.
| // Typically easier to use when performing unit tests.
| RestClient client = RestClient.create().json5().build();
Clients can also support multiple languages:
| // Create a REST client with support for multiple languages.
| RestClient client1 = RestClient.create().json().xml().openApi().build();
|
| // Create a REST client with support for all supported languages.
| RestClient client2 = RestClient.create().universal().build();
When using clients with multiple language support, the request language is selected by setting the Content-Type
request header.
| // Create a REST client with support for multiple languages.
| RestClient client = RestClient.create().universal().build();
|
| client.post(URI, myBean)
| .contentType("application/json")
| .complete()
| .assertStatus().asCode().is(200);
Languages can also be specified per-request.
| // Create a REST client with no default languages supported.
| RestClient client = RestClient.create().build();
|
| // Use JSON for this request.
| client.post(URI, myBean)
| .json()
| .complete()
| .assertStatus().asCode().is(200);
The {@link oajrc.RestClient.Builder} class provides convenience methods for setting common serializer and parser
settings.
| // Create a basic REST client with JSON support.
| // Use single-quotes and whitespace.
| RestClient client1 = RestClient.create().json().sq().ws().build();
Other methods are also provided for specifying the serializers and parsers used for lower-level marshalling support:
- {@link oajrc.RestClient.Builder}
- {@link oajrc.RestClient.Builder#serializer(Serializer) serializer(Serializer)}
- {@link oajrc.RestClient.Builder#parser(Parser) parser(Parser)}
- {@link oajrc.RestClient.Builder#marshaller(Marshaller) marshaller(Marshaller)}
HTTP parts (headers, query parameters, form data...) are serialized and parsed using the {@link oaj.httppart.HttpPartSerializer}
and {@link oaj.httppart.HttpPartParser} APIs. By default, clients are configured to use {@link oaj.oapi.OpenApiSerializer} and
{@link oaj.oapi.OpenApiParser}. These can be overridden using the following methods:
- {@link oajrc.RestClient.Builder}
- {@link oajrc.RestClient.Builder#partSerializer(Class) partSerializer(Class<? extends HttpPartSerializer>)}
- {@link oajrc.RestClient.Builder#partParser(Class) partParser(Class<? extends HttpPartParser>)}