Intro
In this time, I will try sending files to my Micronaut application.
multipart/form-data
FileController.java
<span>...</span><span>@Get</span><span>(</span><span>"/send"</span><span>)</span><span>public</span> <span>String</span> <span>sendSample</span><span>()</span> <span>{</span><span>File</span> <span>file1</span> <span>=</span> <span>new</span> <span>File</span><span>(</span><span>"C:\\Files\\sample1.xlsx"</span><span>);</span><span>File</span> <span>file2</span> <span>=</span> <span>new</span> <span>File</span><span>(</span><span>"C:\\Files\\sample2.xlsx"</span><span>);</span><span>MultipartBody</span> <span>requestBody</span> <span>=</span> <span>MultipartBody</span><span>.</span><span>builder</span><span>()</span><span>.</span><span>addPart</span><span>(</span><span>"file1"</span><span>,</span> <span>file1</span><span>.</span><span>getName</span><span>(),</span> <span>MediaType</span><span>.</span><span>MICROSOFT_EXCEL_OPEN_XML_TYPE</span><span>,</span> <span>file1</span><span>)</span><span>.</span><span>addPart</span><span>(</span><span>"file2"</span><span>,</span> <span>file2</span><span>.</span><span>getName</span><span>(),</span> <span>MediaType</span><span>.</span><span>MICROSOFT_EXCEL_OPEN_XML_TYPE</span><span>,</span> <span>file2</span><span>).</span><span>build</span><span>();</span><span>HttpRequest</span><span><?></span> <span>req</span> <span>=</span> <span>HttpRequest</span><span>.</span><span>POST</span><span>(</span><span>"http://localhost:8086/files/sample"</span><span>,</span><span>requestBody</span><span>).</span><span>contentType</span><span>(</span><span>MediaType</span><span>.</span><span>MULTIPART_FORM_DATA</span><span>);</span><span>return</span> <span>Mono</span><span>.</span><span>from</span><span>(</span><span>httpClient</span><span>.</span><span>retrieve</span><span>(</span><span>req</span><span>)).</span><span>block</span><span>();</span><span>}</span><span>...</span><span>...</span> <span>@Get</span><span>(</span><span>"/send"</span><span>)</span> <span>public</span> <span>String</span> <span>sendSample</span><span>()</span> <span>{</span> <span>File</span> <span>file1</span> <span>=</span> <span>new</span> <span>File</span><span>(</span><span>"C:\\Files\\sample1.xlsx"</span><span>);</span> <span>File</span> <span>file2</span> <span>=</span> <span>new</span> <span>File</span><span>(</span><span>"C:\\Files\\sample2.xlsx"</span><span>);</span> <span>MultipartBody</span> <span>requestBody</span> <span>=</span> <span>MultipartBody</span><span>.</span><span>builder</span><span>()</span> <span>.</span><span>addPart</span><span>(</span><span>"file1"</span><span>,</span> <span>file1</span><span>.</span><span>getName</span><span>(),</span> <span>MediaType</span><span>.</span><span>MICROSOFT_EXCEL_OPEN_XML_TYPE</span><span>,</span> <span>file1</span><span>)</span> <span>.</span><span>addPart</span><span>(</span><span>"file2"</span><span>,</span> <span>file2</span><span>.</span><span>getName</span><span>(),</span> <span>MediaType</span><span>.</span><span>MICROSOFT_EXCEL_OPEN_XML_TYPE</span><span>,</span> <span>file2</span><span>).</span><span>build</span><span>();</span> <span>HttpRequest</span><span><?></span> <span>req</span> <span>=</span> <span>HttpRequest</span><span>.</span><span>POST</span><span>(</span><span>"http://localhost:8086/files/sample"</span><span>,</span> <span>requestBody</span><span>).</span><span>contentType</span><span>(</span><span>MediaType</span><span>.</span><span>MULTIPART_FORM_DATA</span><span>);</span> <span>return</span> <span>Mono</span><span>.</span><span>from</span><span>(</span><span>httpClient</span><span>.</span><span>retrieve</span><span>(</span><span>req</span><span>)).</span><span>block</span><span>();</span> <span>}</span> <span>...</span>... @Get("/send") public String sendSample() { File file1 = new File("C:\\Files\\sample1.xlsx"); File file2 = new File("C:\\Files\\sample2.xlsx"); MultipartBody requestBody = MultipartBody.builder() .addPart("file1", file1.getName(), MediaType.MICROSOFT_EXCEL_OPEN_XML_TYPE, file1) .addPart("file2", file2.getName(), MediaType.MICROSOFT_EXCEL_OPEN_XML_TYPE, file2).build(); HttpRequest<?> req = HttpRequest.POST("http://localhost:8086/files/sample", requestBody).contentType(MediaType.MULTIPART_FORM_DATA); return Mono.from(httpClient.retrieve(req)).block(); } ...
Enter fullscreen mode Exit fullscreen mode
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
To send specific type files like spreadsheets(xlsx), I get a byte array from the file and set as the request body data.
FileController.java
<span>...</span><span>@Get</span><span>(</span><span>"/compute"</span><span>)</span><span>public</span> <span>Mono</span><span><</span><span>ComputeResult</span><span>></span> <span>compute</span><span>()</span> <span>{</span><span>File</span> <span>file</span> <span>=</span> <span>new</span> <span>File</span><span>(</span><span>"C:\\Files\\sample1.xlsx"</span><span>);</span><span>byte</span><span>[]</span> <span>fileData</span> <span>=</span> <span>Files</span><span>.</span><span>readAllBytes</span><span>(</span><span>file</span><span>.</span><span>toPath</span><span>());</span><span>HttpRequest</span><span><?></span> <span>req</span> <span>=</span> <span>HttpRequest</span><span>.</span><span>POST</span><span>(</span><span>"http://localhost:8086/compute"</span><span>,</span><span>fileData</span><span>)</span><span>.</span><span>contentType</span><span>(</span><span>MediaType</span><span>.</span><span>MICROSOFT_EXCEL_OPEN_XML_TYPE</span><span>);</span><span>return</span> <span>Mono</span><span>.</span><span>from</span><span>(</span><span>httpClient</span><span>.</span><span>retrieve</span><span>(</span><span>req</span><span>)).</span><span>map</span><span>(</span><span>result</span> <span>-></span> <span>{</span><span>// Converting the JSON value into a class what is named ComputeResult.</span><span>ObjectMapper</span> <span>mapper</span> <span>=</span> <span>new</span> <span>ObjectMapper</span><span>();</span><span>try</span> <span>{</span><span>return</span> <span>mapper</span><span>.</span><span>readValue</span><span>(</span><span>result</span><span>,</span> <span>ComputeResult</span><span>.</span><span>class</span><span>);</span><span>}</span> <span>catch</span> <span>(</span><span>JsonProcessingException</span> <span>e</span><span>)</span> <span>{</span><span>return</span> <span>null</span><span>;</span><span>}</span><span>});</span><span>...</span> <span>@Get</span><span>(</span><span>"/compute"</span><span>)</span> <span>public</span> <span>Mono</span><span><</span><span>ComputeResult</span><span>></span> <span>compute</span><span>()</span> <span>{</span> <span>File</span> <span>file</span> <span>=</span> <span>new</span> <span>File</span><span>(</span><span>"C:\\Files\\sample1.xlsx"</span><span>);</span> <span>byte</span><span>[]</span> <span>fileData</span> <span>=</span> <span>Files</span><span>.</span><span>readAllBytes</span><span>(</span><span>file</span><span>.</span><span>toPath</span><span>());</span> <span>HttpRequest</span><span><?></span> <span>req</span> <span>=</span> <span>HttpRequest</span><span>.</span><span>POST</span><span>(</span><span>"http://localhost:8086/compute"</span><span>,</span> <span>fileData</span><span>)</span> <span>.</span><span>contentType</span><span>(</span><span>MediaType</span><span>.</span><span>MICROSOFT_EXCEL_OPEN_XML_TYPE</span><span>);</span> <span>return</span> <span>Mono</span><span>.</span><span>from</span><span>(</span><span>httpClient</span><span>.</span><span>retrieve</span><span>(</span><span>req</span><span>)).</span><span>map</span><span>(</span><span>result</span> <span>-></span> <span>{</span> <span>// Converting the JSON value into a class what is named ComputeResult.</span> <span>ObjectMapper</span> <span>mapper</span> <span>=</span> <span>new</span> <span>ObjectMapper</span><span>();</span> <span>try</span> <span>{</span> <span>return</span> <span>mapper</span><span>.</span><span>readValue</span><span>(</span><span>result</span><span>,</span> <span>ComputeResult</span><span>.</span><span>class</span><span>);</span> <span>}</span> <span>catch</span> <span>(</span><span>JsonProcessingException</span> <span>e</span><span>)</span> <span>{</span> <span>return</span> <span>null</span><span>;</span> <span>}</span> <span>});</span>... @Get("/compute") public Mono<ComputeResult> compute() { File file = new File("C:\\Files\\sample1.xlsx"); byte[] fileData = Files.readAllBytes(file.toPath()); HttpRequest<?> req = HttpRequest.POST("http://localhost:8086/compute", fileData) .contentType(MediaType.MICROSOFT_EXCEL_OPEN_XML_TYPE); return Mono.from(httpClient.retrieve(req)).map(result -> { // Converting the JSON value into a class what is named ComputeResult. ObjectMapper mapper = new ObjectMapper(); try { return mapper.readValue(result, ComputeResult.class); } catch (JsonProcessingException e) { return null; } });
Enter fullscreen mode Exit fullscreen mode
text/json
ComputingStatusRequest.java
<span>package</span> <span>jp.masanori.dto</span><span>;</span><span>import</span> <span>io.micronaut.serde.annotation.Serdeable</span><span>;</span><span>import</span> <span>com.fasterxml.jackson.databind.PropertyNamingStrategies</span><span>;</span><span>import</span> <span>com.fasterxml.jackson.databind.annotation.JsonNaming</span><span>;</span><span>@Serdeable</span><span>@JsonNaming</span><span>(</span><span>PropertyNamingStrategies</span><span>.</span><span>UpperCamelCaseStrategy</span><span>.</span><span>class</span><span>)</span><span>public</span> <span>class</span> <span>ComputingStatusRequest</span> <span>{</span><span>public</span> <span>String</span> <span>RequestID</span><span>;</span><span>}</span><span>package</span> <span>jp.masanori.dto</span><span>;</span> <span>import</span> <span>io.micronaut.serde.annotation.Serdeable</span><span>;</span> <span>import</span> <span>com.fasterxml.jackson.databind.PropertyNamingStrategies</span><span>;</span> <span>import</span> <span>com.fasterxml.jackson.databind.annotation.JsonNaming</span><span>;</span> <span>@Serdeable</span> <span>@JsonNaming</span><span>(</span><span>PropertyNamingStrategies</span><span>.</span><span>UpperCamelCaseStrategy</span><span>.</span><span>class</span><span>)</span> <span>public</span> <span>class</span> <span>ComputingStatusRequest</span> <span>{</span> <span>public</span> <span>String</span> <span>RequestID</span><span>;</span> <span>}</span>package jp.masanori.dto; import io.micronaut.serde.annotation.Serdeable; import com.fasterxml.jackson.databind.PropertyNamingStrategies; import com.fasterxml.jackson.databind.annotation.JsonNaming; @Serdeable @JsonNaming(PropertyNamingStrategies.UpperCamelCaseStrategy.class) public class ComputingStatusRequest { public String RequestID; }
Enter fullscreen mode Exit fullscreen mode
FileController.java
<span>...</span><span>@Get</span><span>(</span><span>"/status"</span><span>)</span><span>public</span> <span>Mono</span><span><</span><span>ComputeResult</span><span>></span> <span>getStatus</span><span>()</span> <span>{</span><span>ComputingStatusRequest</span> <span>requestId</span> <span>=</span> <span>new</span> <span>ComputingStatusRequest</span><span>();</span><span>requestId</span><span>.</span><span>RequestID</span> <span>=</span> <span>startResult</span><span>.</span><span>getRequestId</span><span>();</span><span>ObjectMapper</span> <span>mapper</span> <span>=</span> <span>new</span> <span>ObjectMapper</span><span>();</span><span>HttpRequest</span><span><?></span> <span>req</span> <span>=</span> <span>HttpRequest</span><span>.</span><span>POST</span><span>(</span><span>"http://localhost:8086/status"</span><span>,</span><span>mapper</span><span>.</span><span>writeValueAsString</span><span>(</span><span>requestId</span><span>))</span><span>.</span><span>contentType</span><span>(</span><span>MediaType</span><span>.</span><span>TEXT_JSON_TYPE</span><span>);</span><span>return</span> <span>Mono</span><span>.</span><span>from</span><span>(</span><span>httpClient</span><span>.</span><span>retrieve</span><span>(</span><span>req</span><span>)).</span><span>map</span><span>(</span><span>result</span> <span>-></span> <span>{</span><span>ObjectMapper</span> <span>mapper</span> <span>=</span> <span>new</span> <span>ObjectMapper</span><span>();</span><span>try</span> <span>{</span><span>return</span> <span>mapper</span><span>.</span><span>readValue</span><span>(</span><span>result</span><span>,</span> <span>ComputeResult</span><span>.</span><span>class</span><span>);</span><span>}</span> <span>catch</span> <span>(</span><span>JsonProcessingException</span> <span>e</span><span>)</span> <span>{</span><span>return</span> <span>null</span><span>;</span><span>}</span><span>});</span><span>}</span><span>...</span><span>...</span> <span>@Get</span><span>(</span><span>"/status"</span><span>)</span> <span>public</span> <span>Mono</span><span><</span><span>ComputeResult</span><span>></span> <span>getStatus</span><span>()</span> <span>{</span> <span>ComputingStatusRequest</span> <span>requestId</span> <span>=</span> <span>new</span> <span>ComputingStatusRequest</span><span>();</span> <span>requestId</span><span>.</span><span>RequestID</span> <span>=</span> <span>startResult</span><span>.</span><span>getRequestId</span><span>();</span> <span>ObjectMapper</span> <span>mapper</span> <span>=</span> <span>new</span> <span>ObjectMapper</span><span>();</span> <span>HttpRequest</span><span><?></span> <span>req</span> <span>=</span> <span>HttpRequest</span><span>.</span><span>POST</span><span>(</span><span>"http://localhost:8086/status"</span><span>,</span> <span>mapper</span><span>.</span><span>writeValueAsString</span><span>(</span><span>requestId</span><span>))</span> <span>.</span><span>contentType</span><span>(</span><span>MediaType</span><span>.</span><span>TEXT_JSON_TYPE</span><span>);</span> <span>return</span> <span>Mono</span><span>.</span><span>from</span><span>(</span><span>httpClient</span><span>.</span><span>retrieve</span><span>(</span><span>req</span><span>)).</span><span>map</span><span>(</span><span>result</span> <span>-></span> <span>{</span> <span>ObjectMapper</span> <span>mapper</span> <span>=</span> <span>new</span> <span>ObjectMapper</span><span>();</span> <span>try</span> <span>{</span> <span>return</span> <span>mapper</span><span>.</span><span>readValue</span><span>(</span><span>result</span><span>,</span> <span>ComputeResult</span><span>.</span><span>class</span><span>);</span> <span>}</span> <span>catch</span> <span>(</span><span>JsonProcessingException</span> <span>e</span><span>)</span> <span>{</span> <span>return</span> <span>null</span><span>;</span> <span>}</span> <span>});</span> <span>}</span> <span>...</span>... @Get("/status") public Mono<ComputeResult> getStatus() { ComputingStatusRequest requestId = new ComputingStatusRequest(); requestId.RequestID = startResult.getRequestId(); ObjectMapper mapper = new ObjectMapper(); HttpRequest<?> req = HttpRequest.POST("http://localhost:8086/status", mapper.writeValueAsString(requestId)) .contentType(MediaType.TEXT_JSON_TYPE); return Mono.from(httpClient.retrieve(req)).map(result -> { ObjectMapper mapper = new ObjectMapper(); try { return mapper.readValue(result, ComputeResult.class); } catch (JsonProcessingException e) { return null; } }); } ...
Enter fullscreen mode Exit fullscreen mode
© 版权声明
THE END
暂无评论内容