RestDocs의 Custom Snippet으로 에러코드 쉽게 문서화하기
배경RestDocs로 테스트를 통과한 API에 대해서 문서화를 할 수 있다.우리 프로젝트에서는 정상 요청 흐름을 중점으로 API 문서화했다.하지만 해당 API에서 발생 가능한 애외 상황에 대한 응답도 정리해줘야 했다.그래서 우리는 백엔드 단에서 발생하는 예외에 매핑되는 예외 코드를 만들어서 예외 상황 발생 시 해당 예외 코드를 바디에 담아서 반환하도록 해서
배경RestDocs로 테스트를 통과한 API에 대해서 문서화를 할 수 있다.우리 프로젝트에서는 정상 요청 흐름을 중점으로 API 문서화했다.하지만 해당 API에서 발생 가능한 애외 상황에 대한 응답도 정리해줘야 했다.그래서 우리는 백엔드 단에서 발생하는 예외에 매핑되는 예외 코드를 만들어서 예외 상황 발생 시 해당 예외 코드를 바디에 담아서 반환하도록 해서
Rest api 프로젝트를 하면서 배운 것들을 정리하고자 한다. JPA entity에서 배운 것들12345678910111213141516171819202122232425@Entity@Getter @Setterpublic class Investments { @Id @GeneratedValue(strategy = GenerationType.IDENT
삭제하기BoardService에 메소드 추가1234@Transactionalpublic void deletePost(int id){ boardRepository.deleteById(id);} ApiController에 메소드 추가하기12345@DeleteMapping("api/board/{id}"
BoardService에 postDetail 추가하기123456public Board postDetail(int id){ return boardRepository.findById(id) .orElseThrow(()->{ return new IllegalArgumentException
서비스 구현 - 컨트롤러 연결 - jsp 수정 BoardService 수정하기123456789101112import java.util.List;//스프링이 컴포넌트 스캔을 통해서 Bean에 자동 등록. IoC를 해줌@Servicepublic class BoardService { @Autowired private BoardRepositor
화면 구성일단 index.jsp를 수정하자. 123456789101112131415<%@ include file="layout/header.jsp"%><div class="container"> <c:forEach var="board" items="${bo
BoardControllerBoardController에 글쓰기 버튼을 눌렀을때 분기처리 메소드를 만들자. 12345//USER 권한 필요@GetMapping("/board/saveForm")public String saveForm(){ return "board/saveForm";} 화면 구성그리
시큐리티는 로그인 요청을 가로채간다.우리는 회원가입에 필요한 joinProc uri를 UserApiController에 정의했었다.그러나 로그인에 필요한 메서드는 만들지 않는다.왜? 시큐리티가 가로채가서 로그인을 실행하기 때문. SecurityConfigure 수정이제 로그인을 시큐리티가 실행할 수 있게 수정해보자. 1234567891011121314151
시큐리티는 어떤 원리로 작동할까?스프링에서 로그인 요청을 하면 시큐리티가 이를 지켜보다가username과 password를 가로채간다.시큐리티는 가로챈 username과 password로 로그인을 진행시키고,시큐리티 세션에 해당 유저 정보 객체를 저장하고, DI하여 사용하도록 한다.(이때, 세션에 저장된 유저 정보는 UserDetails 객체다.) 그러면
Spring starter security일단 스프링 시큐리티를 이용하기 위해 pom.xml에 있는 관련 dependency를 모두 주석해제하자.그리고 전통적 방식 로그인 메서드를 주석처리하고 다시 사이트에 들어가려면…이렇게 시큐리티가 로그인 화면을 띄우게 된다. 이렇게 Spring starter security는 진입할 때 로그인 정보를 입력하도록 한다!
loginForm.jsp회원가입을 구현했던 것과 비슷하게 진행한다.loginForm.jsp에서 button 태그를 form 밖으로 빼고, 스크립트 태그를 추가해 user.js를 읽을 수 있게 했다. 123456789101112131415161718192021222324<%@ page contentType="text/html;charset=UT
JS 세팅resource - static에 js폴더를 만들고 그 안에 user폴더 생성한다.user폴더에 user.js를 만들고 다음같이 작성한다.그리고 jQuery를 사용해 다음같이 작성한다. 1234567891011let index = { init : function(){ $("#btn-save").
템플릿 구성하기우리 블로그에서 모든 페이지에서 푸터가 동일하게 적용될 수 있도록 템플릿을 구성해보자.스크립트 태그를 바디가 끝나는 태그 바로 위에 두자.(다른방식도 있으니 유의하자.)views 폴더 안에 layout 폴더를 만들고, footer.jsp, header.jsp를 만들자. 그리고 index.jsp에서 헤더에 해당하는 부분을 header.jsp로
웹 UI를 구현할 때, 굳이 html, css를 모두 구현할 필요가 없다.Bootstrap이나 Materialize를 통해서 쉽게 구현할 수 있다. 우리는 w3school에서 bootstrap4의 collapsing the navigation bar의 코드를 복사한다. 이렇게 프로젝트 구조를 만들어서 index.jsp에 우리가 아까 복사한 내용을 덮어쓰운
update1. save 메소드를 활용한 update123456789101112131415@PutMapping("/dummy/user/{id}")public User updateUser(@PathVariable int id, @RequestBody User requestUser){ System.out.pri
select1. 하나의 데이터 select하기!123456789101112131415161718192021@GetMapping("/dummy/user/{id}")public User detail(@PathVariable int id){ //1. User user = userRepository.findB