전체 글
-
API 예외 처리Java/SpringBoot 2022. 8. 18. 17:24
기존 방식의 예외처리로는 API 요청 시 예외가 발생하지 않을 경우- 데이터가 정상적으로 반환되지만 예외가 발생하면- 오류 페이지를 반환한다. 그래서 오류 발생 시에도 JSON 형식의 데이터를 반환하도록 한다. API 응답 @RequestMapping(value = "/error-page/500", produces =MediaType.APPLICATION_JSON_VALUE) public ResponseEntity errorPage500Api(HttpServletRequest request, HttpServletResponse response) { log.info("API errorPage 500"); Map result = new HashMap(); Exception ex = (Exception) re..
-
파일 업로드Java/SpringBoot 2022. 8. 18. 17:12
Http form을 서버에 보낼때 여러 항목을 보내기 위해서 `multipart/form-data` 형식을 사용한다. 이를 통해 여러 파일과 폼의 내용을 함께 전송할 수 있다. 서블릿과 파일 업로드1 package hello.upload.controller; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.Req..
-
타입 컨버터Java/SpringBoot 2022. 8. 18. 17:11
Spring Type Converter @GetMapping("/hello-v2") public String helloV2(@RequestParam Integer data) { System.out.println("data = " + data); return "ok"; } url의 파라미터로 들어올때의 data는 문자열 형식인데 스프링의 @RequestParam을 거치면 문자가 정수 형식으로 들어온다. 스프링이 중간에서 타입 변환을 해주기 때문이다. 컨버터 인터페이스 구현 package hello.typeconverter.converter; import lombok.extern.slf4j.Slf4j; import org.springframework.core.convert.converter.Converter..
-
쓰레드 풀(Thread pool)을 이용해 이미지 크롤러 성능 높이기Java 2022. 8. 5. 22:49
쓰레드를 잘 만져서 웹 크롤러의 성능을 높여보도록 한다. 일단 Jsoup을 이용해서 셔터스톡에서 1,000장의 이미지를 스토리지에 저장하는 프로그램을 만들었다. 성능의 측정 기준은 프로그램이 완료하는데 걸리는 시간으로 했다. https://github.com/ghchoi0427/SocketServer/blob/master/src/main/java/threadpool GitHub - ghchoi0427/SocketServer: 멀티쓰레딩, pub/sub 패턴, thread pool 멀티쓰레딩, pub/sub 패턴, thread pool. Contribute to ghchoi0427/SocketServer development by creating an account on GitHub. github.com ..
-
캐시와 조건부 요청Web 2022. 7. 6. 22:32
캐시(cache, 문화어: 캐쉬, 고속완충기, 고속완충기억기)는 컴퓨터 과학에서 데이터나 값을 미리 복사해 놓는 임시 장소를 가리킨다. 캐시는 캐시의 접근 시간에 비해 원래 데이터를 접근하는 시간이 오래 걸리는 경우나 값을 다시 계산하는 시간을 절약하고 싶은 경우에 사용한다. 캐시에 데이터를 미리 복사해 놓으면 계산이나 접근 시간 없이 더 빠른 속도로 데이터에 접근할 수 있다. >> 서버 요청 후 응답으로 얻은 파일 등을 저장해두고 같은 요청을 보낼 때 저장된 캐시를 불러옴으로써 네트워크 자원과 시간을 절약하는 방식이다. 조건부 요청 캐시 유효시간이 끝나서 서버에 다시 요청하는 경우 - scenario 1) 기존 데이터가 변경 되었다 - scenario 2) 기존 데이터가 변경 되지 않았다 기존 데이터가..
-
HTTP 헤더Web 2022. 7. 6. 15:52
HTTP 헤더란? 클라이언트, 서버가 http 전송(요청, 응답)하는데 필요한 모든 부가정보를 담는다. 표현: http를 통해 보낼 실제 데이터 표현 헤더: 표현 데이터를 해석할 정보를 제공하는 데이터 Representation(표현) = Representation Metadata(표현 메타데이터) + Representation Data(표현 데이터) 표현 헤더의 종류 Content-type: 표현 데이터 형식 Content-Encoding: 표현 데이터 압축 방식 Content-Language: 표현 데이터의 자연 언어 Content-Length: 표현 데이터 길이 ... Content Negotiation HTTP에서, 컨텐츠 협상이란 동일한 URI에서 리소스의 서로 다른 버전을 서브하기 위해 사용되..
-
Http 상태 코드Web 2022. 7. 6. 14:16
코드 의미 1XX 요청이 수신되어 처리중 2XX 요청 정상 처리 3XX 요청을 완료하려면 추가 행동 필요 4XX 클라이언트 오류 5XX 서버 오류 100번대 코드 - 요청이 수신되어 처리중 : 거의 사용하지 않는다. 200번대 코드 - 클라이언트의 요청을 성공적으로 처리 200 OK 요청이 성공적으로 처리됨 202 Created 요청이 성공적, 새로운 리소스 생성됨(POST, PUT 이후) 202 Accepted 요청이 접수되었으나 처리가 완료되지 않음 204 No Content 요청이 성공적, 응답 데이터 없음 300번대 코드 - 요청을 완료하기 위해 유저 에이전트의 추가 조치 필요 400번대 코드 - 클라이언트 요청 오류 500번대 코드 - 서버 문제로 인한 오류 500 Internal Server ..