In the documentation for the /jars/:jarid/plan endpoint
https://ci.apache.org/projects/flink/flink-docs-stable/monitoring/rest_api.html#jars-jarid-plan

It says:

> Program arguments can be passed both via the JSON request (recommended)
or query parameters.

Has anyone got sample code that sends the JSON request?

I have got the end-point working with query parameters, but I need to
support more than 2083 GET URL length limit.

When I have my code like this:

        UriTemplate template = UriTemplate.fromTemplate(apiUrl)
                .literal("/v1/jars")
                .path("jarId")
                .literal("/plan")
                .query("entryClass", "programArg*", "parallelism")
                .build()
                .set("jarId", jarId);
        if (requestBody.getEntryClass() != null) {
            // TODO find a way to have this as entry-class even if the spec
says no
            template.set("entryClass", requestBody.getEntryClass());
        }
        if (!requestBody.getProgramArgs().isEmpty()) {
            template.set("programArg",
requestBody.getProgramArgs().toArray(new String[0]));
        }
        if (requestBody.getParallelism() > 0) {
            template.set("parallelism", requestBody.getParallelism());
        }
        return get(
                template,
                null,
                null,
                JsonNode.class,
                MEDIA_TYPE_JSON
        );

Then I get the plan returned.

When I change to this

        UriTemplate template = UriTemplate.fromTemplate(apiUrl)
                .literal("/v1/jars")
                .path("jarId")
                .literal("/plan")
                .build()
                .set("jarId", jarId);
        return get(
                template,
                requestBody,
                MEDIA_TYPE_JSON,
                JsonNode.class,
                MEDIA_TYPE_JSON
        );

I get a 404.

Basically, adding the request body makes the URL go 404... For fun I tried
having both query parameters and request body and that gets a 404 also.

So does anyone have a working example using the JSON request body (and
let's not get started on how a request body is a really bad idea for GET
requests)

Reply via email to