728x90

코딩 자율학습단 22

[DAY 11] REST API 구현

REST API URI 설계 조회 요청 (GET) : /api/articles or /api/articles/{id}생성 요청 (POST) : /api/articles수정 요청 (PATCH) : /api/articles/{id}삭제 요청 (DELETE) : /api/artcles/{id}\ 여태 만들었던 일반 컨트롤러와 REST 컨트롤러의 차이일반 컨트롤러는 mustache 파일은 반환한다. 즉, 백엔드단에서 만들어둔 뷰페이지 파일(html)을 반환한다.그러나 지금부터 만들 REST 컨트롤러는 JSON이나 텍스트와 같은 데이터를 반환한다.조회 요청 (GET) // GET @GetMapping("/api/articles") public List index() { return a..

[DAY 10] REST API와 JSON

REST API서버의 자원을 클라이언트에 구애받지 않고 사용할 수 있게 하는 설계 방식HTTP 요청에 대한 응답으로 서버의 자원을 반환하는데, 특정 클라이언트에 종속되지 않도록 데이터 형식(XML, JSON 등)으로 반환하게 됨.- HTTP URI 를 통해 자원을 명시,- HTTP Method(post, get, put, patch, delete)를 통해- 해당 자원(uri)에 대한 crud 연산을 적용하는 것HTTP 상태 코드API 요청을 보내면 HTTP 상태 코드를 통해 요청이 성공했는지 실패했는지 알 수 있음1XX: Informational(정보 제공) : 임시 응답, 현재 클라이언트의 요청까지는 처리2XX: Success(성공) : 클라이언트의 요청이 서버에서 성공적으로 처리3XX: Redirec..

[DAY 9] CRUD와 SQL 쿼리

JPA 로깅 설정application.properties 에 다음 추가# JPA 로깅 설정# 디버그 레벨로 쿼리 출력logging.level.org.hibernate.SQL=DEBUG# 쿼리 줄바꿈하기spring.jpa.properties.hibernate.format_sql=true# 매개변수 값 보여 주기logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE로깅 레벨레벨 1 TRACE : debug 레벨 보다 더 상세한 정보레벨 2 DEBUG : 응용 프로그램을 디버깅하는 데 필요한 세부 정보레벨 3 INFO : 응용 프로그램의 순조로운 진행정보레벨 4 WARN : 잠재적으로 유해한 상황 정보레벨 5 ERROR : 응용 프로그램이 수행할 ..

[DAY 8] 게시판 CRUD : Delete

흐름1. 클라이언트가 HTTP 메서드로 특정 게시글의 삭제 요청 (상세 페이지에 Delete 버튼 추가)2. 삭제 요청을 받은 컨트롤러가 리파지터리를 통해 DB에 저장된 데이터를 찾아 삭제 (ArticleController에 delete() 메서드 추가, @Getmapping 사용 - findById(id) 메서드로 id 찾은 후 null이 아닌지 확인하고 null이 아니라면 삭제)3. 삭제 완료됐다면 클라이언트를 결과 페이지로 리다이렉트 및 삭제 메시지 남기기 (삭제 후 목록으로 돌아가야하므로 redirect:/articles 설정) 삭제 완료 메세지 남기기RedirectAttributes 객체의 addFlashAttribute() 메서드 사용.addFlashAttribute() : 리다이렉트 시점에서..

[DAY 7] 게시판 CRUD : Update - form 태그에서 PATCH 메서드 이용하는 방법 / Lombok 인식 에러 고치기

흐름데이터 수정 1단계 : 수정 페이지를 만들고 기존 데이터 불러오기1. 수정 페이지 요청 (상세 페이지에 edit 버튼 추가, ArticleController에 edit() 메서드 추가, url : /articles/{id}/edit)2. DB에서 데이터를 찾아 서버로 전송(articleRepository의 findById(id) 메서드 이용)3. 가져온 데이터를 모델에 등록4. 뷰 페이지 출력 (edit.mustache 추가) 데이터 수정 2단계 : 데이터를 수정해 DB에 반영한 후 결과를 볼 수 있게 상세 페이지로 리다이렉트1. 폼 데이터 전달 (form 태그는 patch 사용 불가, post로 하되 id값을 넘겨야하므로 input에 hidden 설정으로 value="{{id}}" 추가)2. DTO..

[DAY 6] 페이지 연결 - 링크와 리다이렉트

링크 (Link)미리 정해 놓은 요청을 간편히 전송하는 기능, 페이지 이동을 위해 사용한다html의 , 태그로 작성, 클라이언트가 링크를 통해 어느 페이지로 이동하겠다고 요청하면 서버는 결과 페이지를 응답함리다이렉트 (Redirect)클라이언트가 보낸 요청을 마친 후 계속해서 처리할 다음 요청 주소를 재지시하는 것.이를 통해 부리된 기능을 하나의 연속적인 흐름으로 연결할 수 있다.리다이렉트 지시를 받은 클라이언트는 해당 주소로 다시 요청을 보내고 서버는 이에 대한 결과를 응답함.실습 다 하고 블로그 적을 때 보니까 헷갈려서 코드 보고 다시 그림 그리면서 복습했음!

[도서후기] 코딩 자율학습 스프링 부트 3 자바 백엔드 개발 입문

너무 더운 여름 혼자 공부하기엔 의욕 부족이라 책을 샀다.인텔리제이 설치부터 실습하는 부분 부분 궁금할 만한 부분은 다 설명이 달려 있어서 좀 더 편하고 혼란스럽지 않게 공부할 수 있는 것 같다. CRUD 들어가기 전에는 그냥 자잘한 버그들만 고치면 됐는데 CRUD 들어가면서 잊고 있었던 자바 문법이 들어와서 자바 선행학습은 필수인 것 같당... 꼭 완독할 수 있기를.

[DAY 5] 게시판 CRUD : Read

5.1 데이터 조회 과정1. 사용자가 데이터 조회 요청을 웹페이지에서 url 요청을 보냄2. 서버의 컨트롤러가 요청하는 데이터 정보를 리파지터리에 전달3. 리파지터리에서 DB에 데이터 조회 요청4. DB에서 해당 데이터를 찾아 엔티티로 반환5. 모델을 통하여 엔티티가 뷰 템플릿으로 전환6. 뷰 페이지가 사용자 화면에 출력됨 * 기본 생성자(매개변수가 아무것도 없는 생성자) 롬복 어노테이션 : @NoArgsConstructor Trouble Shooting문제 상황java: incompatible types: java.lang.Long cannot be converted to java.lang.String데이터 조회하는 show() 메서드에서 형변환 에러 발생함해결 방안 (~ing)일단 아무리 뒤져봐도 모..

[DAY 4] DB 조회와 롬복을 통한 리팩터링

스프링부트를 처음 시작할때 선택했던 H2 DB를 이용하여 데이터가 제대로 들어왔는지 확인해야한다.H2 DB- 인메모리 DB (휘발성O, 종료시 모든 메모리 삭제 / RAM에 데이터 저장)- 개발 단계 혹은 테스트 코드에서 자주 활용 (자바로 작성된 RDBS)- 브라우저 기반 콘솔 프로그램장점- 브라우저 기반이기때문에, 별도의 설치가 필요 없으며 가볍고 빠름- 메모리에서 CRUD 연산을 하기때문에 하드디스크보다 상대적으로 빠름- ANSI 표준 SQL, 호환성 지원 (다른 DB와 호환 가능)- 설정이 단순함단점- 대규모 프로젝트에서는 성능이 부족함- 백업, 복구 기능 부족 브라우저로 접속할때마다 run에서 jdbc url을 찾아서 입력해야함데이터 조회데이터 삽입INSERT INTO article(id, ti..

[DAY 3] 게시판 CRUD : Create

3.1 폼 데이터 태그에 실려 전송되는 데이터 태그에 실어 보낸 데이터는 서버의 컨트롤러가 DTO를 통해 받고, 최종적으로 DB에 저장된다. : 웹 페이지에서의 입력 양식에 쓰이는 태그태그 속성action : 폼 데이터가 전송되는 서버 urlname : 폼 식별 이름accpt-charset : 폼 전송에 사용할 문자 인코딩 지정target : action에서 지정한 url을 현재 창이 아닌 다른 위치에서 열도록 지정method: 폼을 서버에 전송할 http 메소드(GET, POST)3.2 폼 데이터를 DTO로 받기이미 git에 실습한 코드는 업로드 중이니 따로 블로그에 쓰지 않겠지만 흐름만 적고 넘어간다.3.2.1 입력 폼 만들기1. 입력 폼 페이지 생성(templates/new.mustache 추가,..

728x90