[항해99] 주특기 입문 4일차 - 파이썬으로 할땐 재밌었는데. 우당탕탕 과제수난기

LIHA·2023년 2월 7일
2

항해99

목록 보기
37/54
post-thumbnail
post-custom-banner
  • status : 405 Method Not Allowed 가 떴는데요?
    -> 아래 코드에서 @GetMapping 줄을 빼먹었음. 넣었더니 사라짐.
    @GetMapping("/api/bbs")
    public List<Bbs> getBbs(){
        return bbsService.getBbs();
    }
    
  • 게시글을 작성하려고 하면 POST http://localhost:8080/api/bbs 500 가 뜨는데?
    send @ jquery.min.js:2
    ajax @ jquery.min.js:2
    writePost @ index.js:106
    onclick @ (index):43
    눌러보니 이렇게 나온다.

-> 원인은 찾지 못했는데 어쩐지 해결은 했다.

과제가 뭔말인지 모르겠어요😭😭😭😭😭

  1. 게시글 작성 API
    (2월 6일(월)까지 17:00 완료)
    - 제목, 작성자명, 비밀번호, 작성 내용을 저장하고
    - 저장된 게시글을 Client 로 반환하기
  2. 선택한 게시글 조회 API
    • 선택한 게시글의 제목, 작성자명, 작성 날짜, 작성 내용을 조회하기
      (검색 기능이 아닙니다. 간단한 게시글 조회만 구현해주세요.)

아니, 입력받는 란이 없는데 제목이랑 패스워드를 받으라구요? 뭔말이에요 이게? 나보고 만들라는거야?
-> Postman을 쓰면 되는거였다... 좀더 눈에 확 들어오게 써줬으면 좋겠다... 길잃어서 죽을맛이다...

뭔소리야? 가능한 쉽게 생각해보려고 노력하자

  • Controller가 서버 부분의 무언가를 받으니까 app.py 라고 보자...

코드 리뷰 - 완성하신 분들의 이야기

@Transactional 을 쓰지 않으면 DB에 수정이 안된다!
-> 영속성과 관련된 개념이다. 깊게는 아니지만 알아는 두면 좋다... 라고 하는데

혜광님은 @Transactional 지우고도 해봤는데, @Transactional 안 썼을땐 save를 해줬다고.
-> 왜냐면 @Transactional 지우면 save가 안돼서 따로 써줘야 함.

다들 Stream을 사용하는구나.


B2B Saas ?


Spring boot 구동이 느리다면 - Build and run using을 바꿔주자

Ctrl + Alt + S 로 Settings 진입 > Build, Execution, Deployment > Build Tools > Gradle 에서 모두 IntelliJ로 바꾸면 된다.

Gradle 선택하면 외부 툴로 돌리겠다는 거여서 IntelliJ가 외부 툴 구동을 기다리느라 느린데, IntelliJ로 바꾸면 IDE가 바로 구동시키기 때문에 좀더 빠르다.

현업에서는 println을 쓰지 않는다 - log를 남기자

slf4j와 logback을 많이 쓴다. 궁금한게 있으면 검색해봐도 좋다.

./gradlew build 중 FAILED 되면서 invaild source release : 11(혹은 17 기타등등) 이 뜬다

  • :compileJava FAILED 라고 떴다.

-> 프로젝트 SDK 버전이나 JDK 버전 등등 다 통일해도 고쳐지지 않았다. cd build 해봤을때 7개가 아니라 3개만 생기고 libs도 생기지 않았다.
-> 이 블로그 글이 구세주 - build.gradle에서 sourceCompatibility 부분을 주석처리 하니 성공!

build 폴더에 문제가 생기면 - ./gradlew clean 으로 지우자!

  • ./gradlew clean(지우기)나 ./gradlew clean build로 지우고 다시 빌드를 수행하자

웹 개발의 세 가지 - 정적 컨텐츠, MVC와 템플릿 엔진, API

  • 정적 컨텐츠는 서버에서 뭐 하는거 없이 파일을 그대로 웹브라우저에 던져주는 것
  • MVC와 템플릿 엔진은 JSP, PHP 같은 애들이 템플릿 엔진이었음. HTML을 뭔가 서버에서 처리해서 동적으로 바꿔서 클라이언트에 내려주는 것. 최근 패턴이 이것.
  • API는 예전에는 xml 포맷을 썼는데 최근에는 JSON 확장자로 데이터를 내려준다. 데이터를 JSON 타입으로 내려주고 화면은 클라이언트가 알아서 그린다. 서버끼리 통신할때도 API 방식을 쓴다.

Spring을 쓸땐 공식 사이트를 참조하면 좋다 - spring.io

여기에 Welcome page에 대한 얘기도 있다.

  • 예전에는 view에 모든게 다 들어있는 방식이었다. 소위 model one 방식 이라고 한다. 요새는 MVC 분리가 기본이다.
  • '관심사를 분리해야 한다'는 말을 들어본적이 있을 것이다. view는 화면을 그리는데 모든 역량을 집중해야 한다.
  • 컨트롤러나 모델과 관련된 부분은 비즈니스 로직과 관련이 있거나 내부로직을 처리하는데 집중해야 한다.
  • 비즈니스 로직이나 서버 뒷단에 관련된 것은 컨트롤러가 다 뒤에서 처리하고 화면에 필요한 것만 모델에 담아 화면쪽으로 넘겨주는 것이다.

정영호 매니저님 세션

enum?

inner class를 사용해서 DTO 안에 담아서 전달할 수 있다.

JPA Buddy 라고 있다. Repository 쪽에서 정렬하려면 오타가 잘 날수 있다.

업데이트 할때 저장 안해도 되나요? 라는 질문에 1차캐시 더티체킹을 검색해보라는 답변을 주셨다.


근호님의 조언🤩

개인마다 받아들이는 방식도 다르고 속도도 다르기 때문에, 내 방식이 느릴 수도 있으니 본인 페이스대로 갈것. 남들에게 휘둘려봐야 스트레스만 받고 아무것도 못함. (실제로 과제도 못함)


근호님과 건호님의 포스트맨 & 스프링 과제 강의

  • DTO는 원하는 정보를 감싸는건데, 필터처럼 사용한다고 보면 된다.

  • 그래서 나중가면 requestDTO랑 responseDTO를 나중엔 따로 만드는게 좋음.

  • 왜냐면 DTO가 따로 있지 않으면, 내가 정보 받을때 request 받았던 그 형태 그대로 password까지 싹다 response로 보내줄 수 있기 때문. -> 즉, 사용자에게 비밀번호가 노출된다.

  • 포스트맨으로 데이터 전송 시험해보려면 데이터 형식을 맞춰줘야 한다. 내가 Controller에서 @PostMapping을 @RequestBody로 맞춰놨으면 JSON 형식으로 주고받겠단 얘기이므로, Body 타입도 JSON으로 설정한 다음에 송수신 테스트 해야함.
    -> @RequestBody가 왜 JSON이냐면 강의에서 Ben4 24살 그거 할때 했었음.

profile
갑자기 왜 춤춰?
post-custom-banner

1개의 댓글

comment-user-thumbnail
2023년 2월 7일

오늘도 잘보고 갑니다. 파이팅하세요!!

답글 달기