학원/RESTAPI

01/02 74-1 [RESTAPI] DELETE (추가)/ FILEUPLOAD

도원결의 2023. 1. 2. 20:06

DELETE +

반환타입이 String (삭제된 회원)  ==> String 일 땐 한글이 깨진다 ! 고한다 근데 나는 안깨졌는디... 이상...
@DeleteMapping("/users/{username}") ===> 요렇게만 하면 한글이 깨지고

어노에 value 랑 produces 속성을 추가해서 한글깨짐 방지 넣어 줌!

그리고 objectMapper  도 사용해서 json형태로 변환!

@DeleteMapping(value="/users/{username}", produces = "application/json;charset=UTF-8") 
 public String removeUser(@PathVariable String username) throws JsonProcessingException {
    UsersDto dto = dao.selectOne(username); 		
    System.out.println(dao.delete(username)+"행이 삭제 되었습니다.");

    //DTO를 문자열(JSON형태)로 변환
    ObjectMapper mapper = new ObjectMapper();
    return mapper.writeValueAsString(dto);
}

이렇게 하거나 

ResponseEntity 객체를 이용해도 가능함(이거 파일 업로드 할 때 사용했던 객체임!)

@DeleteMapping("/users/{username}") 
 public ResponseEntity<UsersDto> removeUser(@PathVariable String username) throws JsonProcessingException {
    UsersDto dto = dao.selectOne(username); 		
    System.out.println(dao.delete(username)+"행이 삭제 되었습니다.");
    
    //한글처리를 위한 응답해더 설정
    HttpHeaders headers = new HttpHeaders();
    headers.set("Content-Type","text/plain;charset=UTF-8");
    return ResponseEntity.ok().headers(headers).body(dto);	
}

FileUpload

 

파일업로드

먼저 전에 SpringProj 에서 FileUpDownUtils.java를 가져와서

model 패키지 안에 둠!

 

FORM태그(enctype="multipart/form-data") 혹은 AJAX 나 postman으로 요청
postman으로 요청 시 에는 body탭의  form-data 선택 후
key 와 value입력
파일인 경우 key입력 시 옆에 file선택
요청형식
[POST] http://localhost:9090/restapi/files

 

  밑에 이건 일반 String 일 때고
@PostMapping(value="/files",produces ="application/json;charset=UTF-8") 
String 대신 ResponseEntity로 사용 가능 함!!

@PostMapping(value="/files")
public ResponseEntity<Map> upload(HttpServletRequest req,@RequestPart List<MultipartFile> files) throws IllegalStateException, IOException {
    //1.서버 물리적 경로얻기
    String path = req.getSession().getServletContext().getRealPath("/resources");
    for(MultipartFile multipartFile:files) {
        //2.file객체 생셩
        //파일 중복시이름 변경
        String renameFilename=FileUpDownUtils.getNewFileName(path,multipartFile.getOriginalFilename());
        File file = new File(path+File.separator+renameFilename);
        //3업로드
        multipartFile.transferTo(file);
    }
    Map map = new HashMap();
    map.put("success",true);
    //한글처리를 위한 응답해더 설정
    HttpHeaders headers = new HttpHeaders();
    headers.set("Content-Type","text/plain; charset=UTF-8");
    System.out.println(FileUpDownUtils.base64Converter(path,"lion.jpg"));
    return ResponseEntity.ok().headers(headers).body(map);	
}

오전 내내 안되다가 

파일 버전을 높여주니까 된다... 하 ..... 증말

 

잘 들어감 !!