我用GET方法獲得資料,并試圖用PUT方法輸入資料。 我得到一個錯誤的請求。 但當我編輯下面的JSON時,一切都很正常。 那么為什么第一個JSON不作業呢?
控制器類:
@RestController
@RequestMapping("/api")。
public class FileController {
private final FileService fileService。
private final DocService docService。
private final draftFileToPresentationConverter draftFileToPresentationConverter;
@Autowired
private DocFileRelationRepository docFileRelationRepository;
@Autowired
public FileController(FileService fileService,
DocService docService。
DraftFileToPresentationConverter draftFileToPresentationConverter) {
this.fileService = fileService;
this.docService = docService;
this.draftFileToPresentationConverter = draftFileToPresentationConverter;
}
@GetMapping("/docs/files/{id}")。
public ResponseEntity<FilePresentation> getDraftFile(@PathVariable Long id){
DraftFile file = fileService.getFile(id)。
FilePresentation filePresentation = draftFileToPresentationConverter.convert(file)。
return new ResponseEntity<>(filePresentation, HttpStatus.OK)。
}
@PutMapping("/docs/files/{id}")
public ResponseEntity<FilePresentation> updateDraftFile(@RequestBody FilePresentation filePresentation) {
fileService.update(draftFileToPresentationConverter.convert(filePresentation))。
return new ResponseEntity<>(filePresentation, HttpStatus.OK)。
}
DTO:
@Data
public class FilePresentation {
private Long id;
private States state;
private String name;
private String user;
private Date dateUpload;
private Long lenght;
private IdRef document;
private IdRef judgeDoc;
public String getSize()
{
Double result = Double.valueOf(lenght/1024.0/1024.0)。
if(result<1)
{
result = Double.valueOf(lenght/1024.0) 。
if(result<1)
{
return (lenght " байт") 。
}
return (result.intValue() " Кбайт") Кбайт")。)
}
return(result.intValue() " Мбайт")。
}
麻煩的類:
@Data
public class IdRef {
public IdRef(Long id) {
this.id=id。
}
private Long id;
}
我用GET方法得到的JSON,并嘗試喂給PUT方法(并得到400壞請求):
{}。
"id": 21,
"state": "DRAFT",
"name": "DNS-list.tiff",
"user": "JSmith",
"dateUpload": null,
"lenght": 28,
"document": {
"id": 141
},
"judgeDoc": null,
"size": "28 байт"
}
JSON,確實可以作業
{
"id": 21,
"state": "DRAFT",
"name": "DNS-list.tiff",
"user": "JSmith",
"dateUpload": null,
"lenght": 28,
"document": 141,
"judgeDoc": null,
"size": "28 байт"
}
uj5u.com熱心網友回復:
嘗試用@PathVariable更新RequestBody
uj5u.com熱心網友回復:IdRef中的構造器是原因。 我洗掉了建構式,現在作業得很好,我的控制器消耗第一個JSON,沒有錯誤。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/307052.html
標籤:
上一篇:使用JsonPropertyName()渲染帶有obj.property和obj.property[index]的JSON輸入。
下一篇:JSON回圈不列印預期結果
