restfulapi 18

RESTful 웹 서비스 구축 - # Project 04 - 이미지 업로드 (1)

지금까지 Book 이라는 table 만 가지고, GET/POST/PUT/DELETE 를 해볼 수 있는 RESTful을 만들어봤었다.직전 게시글에서 전역 예외 처리에 대해서 공부했고,이제는 Book 이라는 table 말고도 다른 table 도 만들어볼 것이고, 그 table 간의 관계 설정도 해볼 것이다.책과 관련된 이미지를 업로드, 다운로드, 삭제 등을 RESTful API로 만들어볼 것이다. Book 이라는 Entity 를 만들었었다. 이제는 BookImage 라는 Entity 를 만들것이다. (table 이 될 것)책 하나에는 여러개의 책 이미지가 있을 수 있다. 교보문고 같은 책 판매 페이지를 보면, 알 수 있듯이 여러 개의 이미지가 등록되어 있을 수 있다. 그러므로 1:N 의 관계를 맺게 된다.B..

RESTful 웹 서비스 구축 - @ControllerAdvice / @ExceptionHandler

간단한 REST API 를 만들어봤었다.추가적인 REST API 들을 만들어보기 전에, 예외 처리와 관련된 공부를 하고 가자.프로그램 개발과 예외 처리프로그램 개발 과정에서 **예외(Exception)**는 예상치 못한 상황에서 자주 발생합니다. 이러한 예외를 처리하는 방법은 다양합니다:try-catch를 이용한 예외 처리개별 코드 블록에서 발생할 수 있는 예외를 직접 처리합니다.try { // 예외 발생 가능성 있는 코드} catch (Exception ex) { // 예외 처리 코드}예외를 호출한 곳으로 전달 (throws)특정 메서드에서 발생한 예외를 호출한 메서드로 던질 수 있습니다.이를 위해 throws 키워드를 사용합니다. 예외를 직접 처리하지 않고 위임하는 방식입니다.public ..

RESTful 웹 서비스 구축 - @PutMapping / @DeleteMapping

PutMapping 은 수정하기 인데, 왜 CREATED 가 있는것인지,여기서 @Valid 는 @RequestBody 만 @Valid 하는 것인지, 아니면 @PathVariable 까지 포함해서 @Valid 하는 것인지.book.set~~() 을 해서 수정되는 데이터를 교체해줬는데, 왜 book=bookService.save(book); 을 해주는것인지,그리고 save 를 해주게 되면, id 값은 새롭게 부여되는것인지,아니면 id 값은 그대로 있고 @PrePersist 인 createdAt 의 값만 LocalDateTime.now() 를 받아서새롭게 부여되는것인지가 궁금해. 질문에 대한 답변:1. @PutMapping과 HttpStatus.CREATED의 조합:**@PutMapping**은 일반적으로 리..

RESTful 웹 서비스 구축 - @PostMapping / @RequestBody / swagger

entity, repository, service 까지 만들었다.첫번째로 만들어볼 REST API 는, 책 데이터를 저장하는 REST API를 만들어볼 것. 저장은, 기본적으로 POST, @PostMapping 이다. 요청은 /api/books 로 하겠다.요청을 처리하려면 Controller 를 만들어야 한다.@RestController 와 @RequestMapping("/api") 를 붙여준다.@Tag 는 Swagger 에 표시되는 걸 정할 수 있다고 했다. 1. 클래스 선언부@RestController이 클래스가 REST API의 엔드포인트를 제공하는 컨트롤러라는 것을 의미합니다.@Controller와 @ResponseBody가 합쳐진 형태입니다. 반환하는 값은 HTTP 응답의 바디에 직접 들어갑니다..

RESTful 웹 서비스 구축 - @PrePersist / DTO 구분 (Entity, Payload, View)

REST 프로젝트를 MVCS 구조, 3-tier 구조로 만들어보고자 한다. createdAt 같은 경우에는, 우리가 직접 값을 입력하는게 아니라 DB에 데이터가 insert 가 될 때, 날짜는 자동으로 입력이 되도록 하기 위해서 @PrePersist 라는 어노테이션을 붙이면 Book 이라는 객체가 만들어져서 데이터가 DB table 에 들어갈 때 미리 @PrePersist 라는 어노테이션 부분이 실행이 된다. onCreate() 메소드가 실행이 될 것이라, 날짜를 우리가 입력하는게 시스템에서 직접 입력이 될 수 있도록 해주면 된다. protected 라고 했지만, public 이라고 해도 문제는 없다.1. @PrePersist의 의미PrePersist 는 "저장 전에" 라는 뜻을 가진 영어 단어입니다.P..

RESTful 웹 서비스 구축 - @RestController / MySQL / Swagger-ui

지금까지는 H2 DB를 사용했었는데, 이제는 MySQL DB를 사용한다.설치하고 오자. community -> MySQL 8 버전, workbench 가 포함된 걸로 설치하자. @RestController- Spring MVC는 @RestController 을 사용해서 RESTful 서비스 구축을 지원한다.Spring MVC의 RESTful 서비스에는 일반적으로 다양한 HTTP 메서드 (GET, POST, PUT, DELETE 등)에 해당하고특정 URI (Uniform Resource Identifiers, URI 와 URL 은 같은 개념으로 이해) 에 매핑되는 엔드포인트 생성이 포함된다. @RestController - vs - @Controller- 큰 차이는 없다, 클라이언트의 요청이 오면 처리를 ..

RESTful 웹 서비스 구축 - RESTful API와 마이크로 서비스: Spring Boot로 구현한 SOA 기반 아키텍쳐

RESTful 서비스와 백엔드의 역할백엔드 개발에서는 클라이언트의 요청에 따라 데이터베이스(DB)에 저장된 리소스를 클라이언트에게 전달하는 서비스가 핵심입니다.클라이언트는 다양한 시스템이 될 수 있습니다:모바일 시스템: 안드로이드, iOS 등다른 기술 스택: 파이썬, .NET 등이처럼 서로 다른 시스템에서도 우리가 Spring Boot로 만든 백엔드 서비스를 사용할 수 있습니다. 이 경우 백엔드의 역할은 **View(화면 단)**를 개발하는 것이 아니라, 순수하게 클라이언트 요청을 처리하고 데이터(리소스)를 반환하는 것입니다.백엔드와 View의 분리현재는 Java 백엔드와 함께 Thymeleaf나 JSP 같은 Java 기반의 View를 만들어 화면을 구성하고 있습니다. 그러나 프로젝트가 확장되거나 다른 ..