May*_*yur 8 java spring spring-mvc spring-roo
我想创建一个API,它可以将参数作为multipart文件和JSON对象(@RequestBody).请在调用此API时找到以下代码段,我收到415 HTTP错误.如果我删除"@RequestBody LabPatientInfo reportData",那么它工作正常.
@RequestMapping(value={"/lab/saveReport"}, method={RequestMethod.POST},
consumes={"multipart/form-data"}, headers={"Accept=application/json"})
@ResponseBody
public ResponseEntity<String>
saveReport(@RequestParam(value="reportFile") MultipartFile reportFile,
@RequestBody LabPatientInfo reportData) throws IOException {
HttpHeaders headers = new HttpHeaders();
headers.add("Content-Type", "application/json; charset=utf-8");
logger.info("in Lab Save Report");
logger.info("Report Data {} ", reportData);
//logger.info("Request BODY {} ", request.getAttribute("data"));
return new ResponseEntity<String>(HttpStatus.OK);
}
Run Code Online (Sandbox Code Playgroud)
以下是LabPatientInfo类.
@RooJson(deepSerialize = true)
@RooToString
public class LabPatientInfo {
private String firstName;
private String phoneNumber;
private String DateOfBirth;
private Integer age;
private String gender;
private String refferedBy;
private String reportfile;
private String reportType;
private String reportDate;
private String purpose;
private String followUpDate;
private List<ReportDataInfo> analytes;
Run Code Online (Sandbox Code Playgroud)
在点击API时,我正在传递跟随上传文件的JSON对象.
{
"firstName":"abc",
"phoneNumber":"898989",
"DateOfBirth":"asas",
"age":"asas",
"gender":"asas",
"refferedBy":"asas",
"reportfile":"asas",
"reportType":"asas",
"reportDate":"asas",
"purpose":"asas",
"followUpDate":"asas",
"analytes":null
}
Run Code Online (Sandbox Code Playgroud)
aba*_*hel 10
您可以@RequestPart如下使用。这将支持json对象和多部分文件。
@ResponseBody
public ResponseEntity<String>
saveReport(@RequestPart (value="reportFile") MultipartFile reportFile,
@RequestPart LabPatientInfo reportData) throws IOException {
Run Code Online (Sandbox Code Playgroud)
为了使用curl测试它,您可以为json部分创建一个文件(reportData)。假设您创建了“ mydata.json”文件,并将您的json有效负载粘贴到其中。并说您的reportFile是“ report.txt”。现在,您可以使用curl发出请求,如下所示。
curl -v -H "Content-Type:multipart/form-data" -F "reportData=@mydata.json;type=application/json" -F "reportFile=@report.txt;type=text/plain" http://localhost:8080/MyApp/lab/saveReport
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10106 次 |
| 最近记录: |