#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
}