본문 바로가기

반응형

Spring boot

(21)
쿠키,세션,토큰,JWT 1. 쿠키(Cookie)개념: 쿠키는 웹 서버가 사용자의 웹 브라우저에 저장하는 작은 데이터 파일입니다.용도: 주로 사용자 식별, 세션 관리, 사용자 설정 유지 등에 사용됩니다.특징:클라이언트 측(브라우저)에 저장됨.만료 기간을 설정할 수 있음.HTTP 요청 시 자동으로 서버에 전송됨.저장 위치: 사용자의 웹 브라우저.2. 세션(Session)개념: 세션은 서버 측에서 사용자와의 상호작용을 지속적으로 유지하기 위한 데이터 저장소입니다.용도: 사용자 로그인 상태 유지, 사용자별 데이터 관리 등에 사용됩니다.특징:서버 측에 저장됨.세션 ID는 클라이언트의 쿠키에 저장됨.서버 메모리나 데이터베이스에 저장될 수 있음.저장 위치: 서버의 메모리 또는 데이터베이스.3. 토큰(Token)개념: 토큰은 인증 및 권한 ..
@NotNull vs @NotEmpty @PostMapping ("/quiz") //선착순퀴즈 수정 버튼@Operation (summary = "선착순퀴즈 이벤트 수정버튼")public QuizDTO updateQuiz(@Validated @RequestBody QuizDTO quizDTO) { return quizService.updateQuiz(quizDTO);}이런식으로 스프링 @Validated 를 썻는데public class QuizDTO { @NotEmpty private Long id; //기타등등}Swagger 를 이용해 API 테스트를 하니깐 id 값이 분명 비어있지 않음에도 계속 500을 반환하였다    왜일까 검색해보니깐 왜 Long 타입에는 @NotEmpty가 아닌 @NotNull을 사용해야 ..
@ModelAttribute vs @RequestBody Spring Boot에서 클라이언트와 서버 사이에서 JSON으로 데이터를 주고받기 위해서는 주로 @RequestBody를 사용합니다. @RequestBody는 HTTP 요청 본문(body)에 포함된 JSON 데이터를 Java 객체로 변환해주는 역할을 합니다. 반면 @ModelAttribute는 주로 폼 데이터나 쿼리 파라미터를 객체로 바인딩할 때 사용됩니다.@RequestBody와 @ModelAttribute의 차이@RequestBody용도: HTTP 요청 본문에 포함된 JSON, XML, 또는 다른 형식의 데이터를 Java 객체로 변환할 때 사용합니다.변환: HttpMessageConverter를 사용하여 요청 본문을 Java 객체로 변환합니다. 기본적으로 JSON 처리를 위해 MappingJackso..
CI/CD란 무엇인가 CI ( Continuous Integration) : 지속적 통합CD ( Continuous Delivery/Deployment) :  지속적 제공/배포 CI, 지속적 통합은 어플리케이션의 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트 되어 공유 레포지토리에 통합하는 것을 의미합니다.(가능하다면 하루에 여러번까지) CI는 언제 필요한가?다수의 개발자가 형상관리(Git,SVN) 툴을 공유하여 사용하는 환경MSA(Micro Service Archietecture) 환경CI의 핵심 목표는버그를 신속하게 찾아 해결하고소프트웨어의 품질을 개선하고새로운 업데이트의 검증 및 릴리즈의 시간을 단축시키는 것에 있다.  CD는 Continuous Delivery 혹은 Continuous Deployment 두 용어..
RESTful API 란 무엇인가?? REST(REpresentational State Transfer) 정의 :REST는 웹 서비스가 어떻게 동작해야 하는지에 대한 아키텍처 스타일 또는 설계 원칙입니다. REST는 클라이언트와 서버 간의 상호작용을 규정하며, 여러 가지 원칙과 제약 조건들을 가지고 있습니다. 예를 들어, REST는 상태를 가지지 않는(stateless) 통신, 캐시 가능한 응답 등을 지향합니다. RESTful API 정의 : RESTful API는 REST 아키텍처 스타일을 따르는 웹 API이다. 즉, REST 원칙을 잘 지키며 설계된 API를 RESTful API 라고 합니다.  비교REST는 이론적인 원칙과 가이드라인 입니다.RESTful API는 그 원칙관 가이드라인을 실제로 적용한 API를 의미합니다.Rest는 일종..
SpringBoot TDD 끄적끄적 Spring 으로 TDD 개발 할 때....JPA 레퍼지토리를 테스트하기 위해서는 @DataJpaTest 어노테이션을 테스트 클래스에 추가해줘야한다.@DataJpaTest은 기본적으로 H2 DATABASE를 기본으로 한다Repository -> Service -> Controller 순으로 테스트주도개발 하는 것을 추천한다. Repository는 구현할 메서드가 없는 통합테스트에 가깝기 때문에 테스트하기 쉽다. 또 Repository가 안정되면 나머지 계층의 테스트도 안정적으로 작성할 수 있다. Spring 으로 Mockito 라이브러리의 핵심 메소드 !! when, verifywhen 메소드when 메소드는 모킹된 객체의 특정 메소드가 호출될 때 그 메소드의 동작을 정의합니다. 예를 들어,when(us..
Spring Boot 끄적끄적(4) AssertJ란?테스트에 관련된 많은 기능을 제공하고 메서드 체이닝으로 가독성 높은 테스트 코드 작성을 지원하는 오픈 라이브러리입니다. assertThat(검증대상)로 시작하며 메서드 체이닝을 이용하여 검증 메서드를 연쇄적으로 더 깔끔하고 가독성 있게 테스트 코드를 작성할 수 있습니다.asserThat이 가독성이 조금 더 좋다고 합니다.  Optional 올바르게 사용하기1. Optional 변수에 절대로 null 을 할당 하지 말 것나쁜 예 : OptionalMember> findById(Long id) {     // find Member from db     if (result == 0) {         return null;     } }  좋은 예 : Optional findById(Long ..
Spring boot 끄적끄적(3) 스프링 공부하면서 배운 것들 총 집합~~타임리프 th:value와 th:field의 충돌 이렇게 쓰려고 하니 session.member.name값이 출력이 안되었다. 알고보니 두 문법이 충돌되서 value가 무시된다고 한다. HTML a 태그는 GET 방식 밖에 못 쓴다이유는 모르겠다 그렇단다 @RequestMapping   공통적인 url은 class에 @RequestMapping 으로 설정해 줄 수 있다!!@RestController@RequestMapping(value = "/hello")public class HelloController { @GetMapping() public String helloGet(...) { ... } @PostMapping() p..

반응형