RequestOptions (Azure SDK for Java Reference Documentation)

Publish date: 2024-04-27
This class contains the options to customize an HTTP request. RequestOptions can be used to configure the request headers, query params, the request body, or add a callback to modify all aspects of the HTTP request.

An instance of fully configured RequestOptions can be passed to a service method that preconfigures known components of the request like URL, path params etc, further modifying both un-configured, or preconfigured components.

To demonstrate how this class can be used to construct a request, let's use a Pet Store service as an example. The list of APIs available on this service are documented in the swagger definition.

Creating an instance of RequestOptions

 RequestOptions options = new RequestOptions() .setBody(BinaryData.fromString("{\"name\":\"Fluffy\"}")) .addHeader("x-ms-pet-version", "2021-06-01"); 

Configuring the request with JSON body and making a HTTP POST request

To add a new pet to the pet store, an HTTP POST call should be made to the service with the details of the pet that is to be added. The details of the pet are included as the request body in JSON format. The JSON structure for the request is defined as follows:
 { "id": 0, "category": { "id": 0, "name": "string" }, "name": "doggie", "photoUrls": [ "string" ], "tags": [ { "id": 0, "name": "string" } ], "status": "available" } 
To create a concrete request, Json builder provided in javax package is used here for demonstration. However, any other Json building library can be used to achieve similar results.
 JsonArray photoUrls = Json.createArrayBuilder() .add("https://imgur.com/pet1") .add("https://imgur.com/pet2") .build(); JsonArray tags = Json.createArrayBuilder() .add(Json.createObjectBuilder() .add("id", 0) .add("name", "Labrador") .build()) .add(Json.createObjectBuilder() .add("id", 1) .add("name", "2021") .build()) .build(); JsonObject requestBody = Json.createObjectBuilder() .add("id", 0) .add("name", "foo") .add("status", "available") .add("category", Json.createObjectBuilder().add("id", 0).add("name", "dog")) .add("photoUrls", photoUrls) .add("tags", tags) .build(); String requestBodyStr = requestBody.toString(); 
Now, this string representation of the JSON request can be set as body of RequestOptions
 RequestOptions options = new RequestOptions() .addRequestCallback(request -> request // may already be set if request is created from a client .setUrl("https://petstore.example.com/pet") .setHttpMethod(HttpMethod.POST) .setBody(requestBodyStr) .setHeader(HttpHeaderName.CONTENT_TYPE, "application/json")); 

ncG1vNJzZmiZqqq%2Fpr%2FDpJuom6Njr627wWeaqKqVY8SqusOorqxmnprBcHDWnploopGrrnCt2a6pnmWTpL%2Bme5Bna3FmYGSwsLmOmrGuqpVksLC%2BxGifraygZL%2Bmv9NoiZ6ppZrAtZvPraCopqNjtbW5yw%3D%3D