JHipster, служба spring rest с составными частями и JSON, ошибка swagger / curl

#json #spring-mvc #curl #swagger #jhipster

#json #spring-mvc #curl #swagger #jhipster

Вопрос:

У меня возникли проблемы с JHipster при публикации службы rest spring. Служба включает в себя составной файл, параметры и объект JSON. Насколько мне известно, я должен иметь возможность публиковать следующим образом:

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

API swagger не распознает параметр «метаданные», объявляя его как «неопределенный» тип данных. И когда я пытаюсь выполнить запрос curl, я получаю следующую ошибку:

 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,{}>
  

Запрос curl:

 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'
  

Я много чего перепробовал, есть предложения?

Заранее спасибо!

Ответ №1:

Наконец, я принял решение объявить параметр JSON в виде строки и проанализировать его самостоятельно.

Если кто-нибудь знает, как опубликовать параметр как объект JSON, я буду признателен за любую подсказку.

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