{title:'POJO Marshalling', created:'8.2.0', updated:'9.0.0'}

By default, JSON support is provided for HTTP request and response bodies. Other languages can be specified using any of the following builder methods:

Example:

| // 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:

Example:

| // 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.

Example:

| // 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:

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: