월 19,800원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 해결됨스프링 기반 REST API 개발
한글깨짐현상
응답시에, defaultMessage를 한글로 줬는데, 깨지는 경우에는 어떻게 해결할 수 있을까요???
- 스프링 기반 REST API 개발
Junit 질문드립니다.
삭제된 글입니다
- 미해결스프링 기반 REST API 개발
authenticationManager를 Bean으로 노출시키는 이유
authenticationManager를 Bean으로 노출시키는 이유가 무엇인가요?
- 미해결스프링 기반 REST API 개발
PagedResourcesAssembler 관해서 질문 드립니다.
리스트에서 Like 검색의 경우페이징 링크 정보는 해당 키워드를 어떻게 물고 있어야 할지.. 어떻게 하는게 좋은 방법 일까요?
- 해결됨스프링 기반 REST API 개발
Junit5 매개변수 이용 테스트
junit5 에서 매개변수를 이용한 테스트를 하는 방법입니다. 찾으시는 분들 있으실 거 같아서 링크 남겨놓을게요 1. 의존성 추가 https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-params/5.7.0 <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-params</artifactId> <version>5.7.0</version> <scope>test</scope> </dependency> 2. 사용법 특히, @MethodSource 부분을 잘 찾아보시면 될 것 같습니다 https://www.baeldung.com/parameterized-tests-junit-5
- 해결됨스프링 기반 REST API 개발
무제한 경매
spring 에 관련한 질문은 아니지만.. 그냥 계속 궁금증이 맴돌아서 여쭤보겠습니다. 무제한 경매를 가정한 상황에서 basePrice 가 maxPrice 보다 크고 maxPrice가 0인 상황이 어떤 상황인가요..? 이벤트를 최초로 등록하는, (이벤트를 경매에 올리는) 상황을 의미하는 건가요??
- 미해결스프링 기반 REST API 개발
REST API 부분 수정 및 삭제 문의 드립니다.
안녕하세요. REST API 개발 중 문의드릴게 있어서 글 올립니다. 데이터 중 일부 수정, 일부 삭제를 원하는데요. 백앤드에서 modelmapper를 사용해 null 값으로 넘어오는 속성에 대해서 PATCH일 경우는 아래와 같이 설정을 하여 null로 넘어오는 DTO 속성은 무시하여 entity의 값을 덮어쓰지 않게 하였고 modelMapper.getConfiguration().setSkipNullEnabled(true); PUT일 경우는 아래와 같이 설정하여 null로 넘어오는 DTO 속성에 대해서 entity의 속성을 null로 덮어쓰게 하였습니다. modelMapper.getConfiguration().setSkipNullEnabled(false); 위와 같이 설정하면서 초기 데이터가 아래와 같을 때 GET /users/1 { "name": "ajp", "age": 33 } -------------- PUT /users/1 { "name": "ajp2" } 와 같이 REST API 요청 시 아래 결과가 되고 GET /users/1 { "name": "ajp2", "age": null } -------------- PATCH /users/1 { "name": "ajp2" } 와 같이 REST API 요청 시 아래 결과가 되도록 하였습니다. GET /users/1 { "name": "ajp2", "age": 33 } 이게 제가 잘 설계한게 맞는건가요? 아니라면 혹시 데이터 중 일부는 수정하고 일부는 삭제하고 싶을 경우에 어떤식으로 설계하면 좋을까요? 현재 @RequestBody로 json 데이터를 DTO로 받고 있습니다. 조언 부탁드립니다 감사합니다 :)
- 미해결스프링 기반 REST API 개발
선장님 테스트코드 질문있습니다
정확히 해당 강의와는 일치하지 않지만 강의를 보면서 테스트코드 문의드립니다 통합테스트를 진행할때 기존 들어가있어야 할 데이터를 기준으로 테스트가 필요할때가 있는데요. 예로 유저 로그인 테스트다 하면 유저 아이디를 알아야 테스트를 할 수 있고 매뉴별 접근권한 테스트를 한다해도 기존 들어있는 데이터가 있어야 로그인을 통해 세션/토큰을 가져와서 테스트를 할텐데요. 보통 이럴때는 테스트는 어떤식으로 해야하나요!? 개발디비를 바라보고 해야하는지 아니면 메모리h2 데이터베이스를 보고 해야하는지 궁금해서요.. 메모리에 올리고 하자니 특정 기능테스트가 여러 테이블에 걸쳐서 가져오는 데이터가 필요할 시 이걸 어떤식으로 넣어놓고 해야하는건가 싶습니다..(로딩과 동시에 메모리에 데이터를 삽입하는쿼리를 넣어놔야하나 싶고요..) 이런 내용 아니어도 계정 수정 테스트다 이러면 이미 계정이 존재해야하는데 이 테스트 시에 매번 계정을 넣고 수정하고를 해야하는지.. 아니면 테스트 순서를 정하고 삽입 수정 삭제와 같은 순서로 동작하도록 테스트를 돌려야하는지(트랜잭션 롤백 안되게 처리 후).. ㅜㅜ 계속 테스트 감을 못잡고 있어서 문의드립니다 먼저 감사합니다 ㅠㅠ
- 미해결스프링 기반 REST API 개발
PATCH 에 대한 가이드 주실수 있나요?
강의에서 소개해준 내용의 Validation은 PUT METHOD 사용시에는 지장이 없으나, 부분수정인 PATCH 사용중에는 제 능력으로는 어떻게 변경해야 할지 잘 모르겠습니다. 혹시 어느 부분 위주로 수정을해야 부분수정인 PATCH 메소드를 생성할수 있는지 가이드 주실수 있나요?
- 미해결스프링 기반 REST API 개발
필요한 라이브러리를 찾으시는 방법이 궁금합니다.
Test 생성시에 Page 에 관한 정보를 가져오기로 테스트 케이스를 만들고 관련된 정보가 오지 않으시니까 바로 PageResourceAssembler 라는 라이브러리를 사용해서 처리하셨는데, 혹시 테스트 케이스를 만들때부터 해당 라이브러리를 생각하고 만드신걸까요?? 아니라면 자신이 필요한 라이브러리를 다 외우시고 계신것 같은데.. 많은 라이브러리를 자신의 것으로 만드는 팁이 있을까요???
- 미해결스프링 기반 REST API 개발
spring boot 2.3.x 버전 질문있습니다.
2.2.5버전 에서 hateos 메서드 변경적용후 2.3.x으로 버전업을 해보니 EntityModel 에서 변동사항이 있었습니다 생성자가 Deprecated되고 static메서드인 of메서드가 추가되었는데 기존 생성과 수정 api에서 사용하던 badRequest 응답시에 500에러가 발생합니다 ResponseEntity<ErrorsResource> body = ResponseEntity.badRequest().body(new ErrorsResource(errors)); -> ErrorsResource errorsResource = ErrorsResource.of(errors); errosResource.add(linkTo(methodOn(IndexController.class).index()).withRel("index")); ResponseEntity<ErrorsResource> body = ResponseEntity.badRequest().body(errosResource); 로 변경하는데 실패했습니다. 다른 방법이 있는걸까요
- 미해결스프링 기반 REST API 개발
안녕하세요 선생님 415 에러코드에 대해서 여쭤보고 싶습니다.
안녕하세요~ 선생님 강의를 쭉 이어서 듣고있는 수강생입니다. 소스코드를 따라하면서 진행하던 도중에 스프링버전이 다른 문제인지 모르겠지만, 테스트의 Created 201 예상이 아닌 415 에러코드가 발생하고 있습니다. 찾아본결과 MediaType에 대한 오류인것으로 확인하였는데요. 제가 현재 진행하는 버전에서는 MediaType.HAL_JSON_UTF89_VALUE 라는 것이 존재하지 않아서 HAL_JSON_VALUE로 사용하고 있습니다. 작은 문제이지만 정확하게 알고 지나가고 싶어서 이렇게 질문드렸습니다! 좋은 강의 감사합니다! 소스코드 캡처본입니다.
- 미해결스프링 기반 REST API 개발
Errors의 경우
errorserializer 를 등록 후에 resource 기능을 사용하지 않고 그냥 body 에 넣어서 return 을 했을 때에는 흔히들 아는 일반적인 error 내용에 대한 값이 오는 것을 확인했습니다. ErrorResource를 따로 만든 다음에 errors를 보내서 body에 넣었을 때에는 @JsonUnwrapped 이 있음에도 불구하고 Errors{} 로 감싸지던데, 이것 또한 error 가 자바 빈 스펙을 따르지 않는 이유와 연관이 있는지가 궁금합니다.
- 미해결스프링 기반 REST API 개발
[인덱스 만들기] 에서 ErrorsResource 부분 질문입니다.
안녕하세요. 강의 목차 중 [인덱스 만들기] 부분 진행하다가 질문이 있습니다. 현재 Spring boot 2.3.4 버전 사용중입니다. ErrorsResource를 만들고, EventController.java파일에서 if(errors.hasErrors()){ return ResponseEntity.badRequest().body(new ErrorsResource(errors)); } eventValidator.validate(eventDTO, errors); if(errors.hasErrors()){ return ResponseEntity.badRequest().body(new ErrorsResource(errors)); } 여기서 return body에 new ErrorsResource(errors)를 추가하니까 500에러가 발생했습니다. 제가 어떤 부분을 놓치고있는 건지 찾아봐도 도저히 모르겠습니다.. ## error 내용 2020-10-02 22:09:06.151 WARN 14548 --- [ main] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: Can not start an array, expecting field name (context: Object); nested exception is com.fasterxml.jackson.core.JsonGenerationException: Can not start an array, expecting field name (context: Object)] MockHttpServletRequest: HTTP Method = POST Request URI = /api/events/ Parameters = {} Headers = [Content-Type:"application/json;charset=UTF-8", Content-Length:"343"] Body = {"name":"spring","description":"rest api dev with spring","beginEnrollmentDateTime":"2020-10-02T23:28:00","closeEnrollmentDateTime":"2020-10-01T23:28:00","beginEventDateTime":"2020-10-02T23:28:00","endEventDateTime":"2020-10-03T23:28:00","location":"kangNam Station D2 startUP factory","basePrice":10000,"maxPrice":200,"limitOfEnrollment":100} Session Attrs = {} Handler: Type = com.kyeongmin.demorestapitest.events.EventController Method = com.kyeongmin.demorestapitest.events.EventController#createEvent(EventDTO, Errors) Async: Async started = false Async result = null Resolved Exception: Type = org.springframework.http.converter.HttpMessageNotWritableException ModelAndView: View name = null View = null Model = null FlashMap: Attributes = null MockHttpServletResponse: Status = 500 Error message = null Headers = [Content-Type:"application/hal+json"] Content type = application/hal+json Body = Forwarded URL = null Redirected URL = null Cookies = [] 아래는 ErrorsResource.java 코드 부분입니다. github 주소입니다 https://github.com/gkm2019/rest-api-test-with-spring
- 미해결스프링 기반 REST API 개발
NoSuchMethodError 문제
findByEmail 메서드에서 NoSuchMethodError 문제가 발생합니다... 구글링을 해보니 라이브러리 충돌이라고 해서 AccountRepository 에서 사용하는건 org.springframework.data.jpa.repository.JpaRepository 길레 dependencies.txt 에서 해당 부분에서 오버라이드 된 곳을 찾아보니 org.aspectj:aspectjweaver 가 1.9.5 에서 1.9.6으로 변경된 것 밖에 없었습니다... 무엇이 잘못되었는지 정말 모르겠는데 한 번만 봐주시면 감사하겠습니다. github.com/Be-poz/stuff/blolb/master/restapi.zip
- 해결됨스프링 기반 REST API 개발
HttpSecurity.anonymous 메소드 질문
안녕하세요. 강의를 학습 후 추가적으로 spring docs를 보면서 공부하고 있는데요. anonymous 메소드 설명을 읽고 익명 사용자를 서비스 내에서 어떻게 표현할지 설정하는 방법이라고 이해했습니다. 그래서 간단한 실험을 위해 http.anonymous().authorities("ROLE_USER"); 이런식으로 설정하면 인증을 하지 않아도 contextholer에 principal 객체가 담기기를 희망했습니다. @Overridepublic void configure(HttpSecurity http) throws Exception { http.anonymous().authorities("ROLE_USER"); http.authorizeRequests() .mvcMatchers("/", "/info", "/account/**", "/signup").permitAll() .mvcMatchers("/admin").hasRole("ADMIN") .mvcMatchers("/user").hasRole("USER") .anyRequest().authenticated() .accessDecisionManager(accessDecisionManager()); http.formLogin(); http.httpBasic(); http.logout().logoutSuccessUrl("/"); SecurityContextHolder.setStrategyName(SecurityContextHolder.MODE_INHERITABLETHREADLOCAL);} 하지만, AnonymousAuthenticationFilter가 인증 객체를 담아줄 것이라는 예상과 달리 principal 객체는 담겨있지 않더군요 ㅜㅜ. 해당 메소드는 어떻게 사용하는 걸까요?
- 미해결스프링 기반 REST API 개발
수정하는 과정에서 질문이 있습니다.
modelMapper를 통해 dto에서 event로 값을 넣고 repository를 이용해서 save 메서드를 사용했는데, jpa에서 엔티티 수정하는 과정에서 변경감지를 이용하기 때문에 update 메서드를 따로 안쓰고 그냥 해당 엔티티의 데이터가 수정되면 변경이 되는 것으로 알고있는데 아닌가요?
- 미해결스프링 기반 REST API 개발
oauth2 설정 관련 문의드립니다.
안녕하세요 기선님 :) 강의 잘 보고 있습니다. 이전부터 궁금했던 내용인데요. 기본 시큐리티 설정에도 특정 요청에 대해서 시큐리티를 적용(?)이라 해야하나요 인증 체크를 할지 말지 이런걸 설정할 수 있고 (강의 소스파일 기준 securityconfig) 리소스 서버 설정에도 리소스 접근에 대한 허용 여부를 설정할 수 있는데요. 혹시 이 설정들은 어떻게 적용되는건가요? 같은 패스일 경우 양쪽 설정을 다르게 했을 때 우선순위가 있는건지 혹은 oauth를 사용할땐 기본 시큐리티에서의 패스에 대한 설정들은 적용되지 않는건지 알고싶습니다! 제가 강의를 빠르게 보다보니 놓쳐서 혹시 내용에 있는 부분인데 추가로 문의드린거라면 죄송합니다 ㅜ.ㅜ
- 미해결스프링 기반 REST API 개발
asciidoctor 에러
html 파일로 만들어주는 build 중 Execution failed for task ':asciidoctor'. >(LoadError) no such file to load -- asciidoctor 라는 오류가 뜹니다. 어디 부분이 문제길레 로드에러가 뜨는지 알고싶습니다...
- 미해결스프링 기반 REST API 개발
@Parameters 를 사용하는데 오류가 발생합니다.
다음과 같이 사용을 하려고 했으나 org.junit.jupiter.api.extension.ParameterResolutionException: No ParameterResolver registered for parameter [int arg0] in method [public void bepoz.restapi.events.EventTest.testFree(int,int,boolean)]. at org.junit.jupiter.engine.execution.ExecutableInvoker.resolveParameter(ExecutableInvoker.java:200) at org.junit.jupiter.engine.execution.ExecutableInvoker.resolveParameters(ExecutableInvoker.java:183) at ..... 와 같은 오류가 뜹니다! junit 4버전 사용중에 있습니다. 어떤 부분에서 문제가 발생한건지 알고 싶습니다 ㅜㅜ