JHipster, spring rest service with MultiPart and J

2019-09-06 06:33发布

问题:

I am having problems with JHipster to publish a rest spring service. The service includes a MultipartFile, parameters and a JSON object. To my knowledge, I should be able to publish as follows:

public @ResponseBody
    ResponseEntity<DocumentId> addDoc(@RequestPart(required = true) MultipartFile file, @RequestPart(required = false) String folder, @RequestPart(required = true) MetadataDoc metadata)

The swagger api does not recognize the parameter "metadata" declaring it as "undefined"data type. And when I try to make a curl request, I get the following error:

2016-09-30 13:27:15.174  WARN 30451 --- [ XNIO-2 task-12] .m.m.a.ExceptionHandlerExceptionResolver : Resolved exception caused by Handler execution: org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'text/plain;charset=UTF-8' not supported
2016-09-30 13:27:15.298 DEBUG 30451 --- [ XNIO-2 task-14] c.q.smartgov.aop.logging.LoggingAspect   : Enter: com.queres.smartgov.web.rest.errors.ExceptionTranslator.processRuntimeException() with argument[s] = [org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'text/plain;charset=UTF-8' not supported]
2016-09-30 13:27:15.298 DEBUG 30451 --- [ XNIO-2 task-14] c.q.smartgov.aop.logging.LoggingAspect   : Exit: com.queres.smartgov.web.rest.errors.ExceptionTranslator.processRuntimeException() with result = <500 Internal Server Error,com.queres.smartgov.web.rest.errors.ErrorVM@3d872331,{}>

The curl request:

curl -X POST --header 'Content-Type: multipart/form-data' --header 'Accept: application/json' --header 'Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsImF1dGgiOiJST0xFX0FETUlOLFJPTEVfVVNFUiIsImV4cCI6MTQ3Njk3NjY3N30.82FRMRSrrniEQcIhI6DtHEFf5ln3OSjS_6OWy-1d8h3Cp5MjRuxo04IuIxAX_WC8YJJ1QyLrq7loLUSQ8RV_Gw' -F file=@"result.txt" -F folder=folde -F metadata={"clave":"2","valor":"1"}  'http://127.0.0.1:8080/sd_api/api/almacen/addDoc'

I have tried a lot of things, any suggestion?

Thanks in advance!

回答1:

Finally I took the solution of declare JSON parameter as a String, an parse it by myself.

If anybody knows how to publish the parameter as JSON Object I will appreciate any clue.

 ObjectMapper mapper = new ObjectMapper();
        try {
            return mapper.readValue(stringValue, mapper.getTypeFactory().constructCollectionType(List.class, MetadataDoc.class));
        } catch (IOException ex) {
            //throw exception
        }