For uploading multiple distinct document types like those in EquipmentLegal
, you have two viable design paths depending on the UX needs, document type clarity, and maintenance expectations.
This is clean, descriptive, and explicit:
java
CopyEdit
@PostMapping("/{equipmentId}/legal/purchase")
public ResponseEntity<String> uploadPurchaseAgreement(@PathVariable UUID equipmentId, @RequestParam MultipartFile file)
@PostMapping("/{equipmentId}/legal/warranty")
public ResponseEntity<String> uploadWarranty(@PathVariable UUID equipmentId, @RequestParam MultipartFile file)
@PostMapping("/{equipmentId}/legal/manual")
public ResponseEntity<String> uploadManual(@PathVariable UUID equipmentId, @RequestParam MultipartFile file)
@PostMapping("/{equipmentId}/legal/inspection")
public ResponseEntity<String> uploadInspectionCertificate(@PathVariable UUID equipmentId, @RequestParam MultipartFile file)
Instead of multiple methods, you expose one upload endpoint and a documentType
parameter:
java
CopyEdit
public enum EquipmentLegalDocumentType {
PURCHASE, WARRANTY, MANUAL, INSPECTION
}
@PostMapping("/{equipmentId}/legal/upload")
public ResponseEntity<String> uploadLegalDocument(
@PathVariable UUID equipmentId,
@RequestParam EquipmentLegalDocumentType type,
@RequestParam MultipartFile file)
switch(type)
or map type to entity field).