Github user tillrohrmann commented on a diff in the pull request: https://github.com/apache/flink/pull/6189#discussion_r197068513 --- Diff: flink-runtime/src/main/java/org/apache/flink/runtime/rest/RestClient.java --- @@ -162,13 +205,25 @@ public void shutdown(Time timeout) { ByteBuf payload = Unpooled.wrappedBuffer(sw.toString().getBytes(ConfigConstants.DEFAULT_CHARSET)); // create request and set headers - FullHttpRequest httpRequest = new DefaultFullHttpRequest(HttpVersion.HTTP_1_1, messageHeaders.getHttpMethod().getNettyHttpMethod(), targetUrl, payload); + final FullHttpRequest httpRequest; + if (multipart) { --- End diff -- I think it would be better to have our own `Request` base class, a method `createRequest(targetUrl, payload, files, etc)` and `MultiPartRequest` and `SimpleRequest` sub classes. A method `Request#send(Channel)` could encapsulate the logic to write out the request. Then `internalSendRequest` has the responsibility to construct the `Request` and triggering the submission. I'm actually not sure whether we would need `internalSendRequest` at all. Doing this in `sendRequest` where we have a `Collection<FileUpload>` should also work. `createRequest` would then check whether to create a `MultiPartRequest` or a `SimpleRequest` based on the `files` parameter.
---