게시글
블로그
전체 32021. 06. 28.
0
[스터디]스프링 리액트 스터디 3회차 REST API
스터디 팀 명 한발 🙂 스터디 진행 회차 및 일자 3회차(2021.06.23) 스카이프 콜 스터디 주요 내용 REST API가 뭔가? - https://www.youtube.com/watch?v=iOueE9AXDQQ REST API 설계 방법 - https://www.youtube.com/watch?v=JMH3cfW-8r8 REST API URI만 봐도 무슨 요청인지 알아볼 수 있어야 한다. REST URI는 동사가 아닌 명사로 이루어져야 한다. CRUD - GET, POST, PUT, DELETE POST로 CUD를 동시에 처리하기도 한다. REST API를 제대로 쓰려면 DB 정규화가 중요하다. URI를 계층적으로 작성하자. 모든 데이터를 보내줘야 한다. 일부만 바꾼다고 일부만 보내지 마라 —> 버그의 온상 REST API가 만능이 아니다. 합리적인 이유가 있고, 회사 내에 명확한 규칙이 있는 경우 그걸 따르면 된다. 스터디에서 나왔던 질문 REST API가 기능이냐 뭐냐 잘 모르겠다. HTTP METHOD와 URI로 구성된 메시지 포맷이다. 전세계 개발자들이 다 아는 표준, API. HTTP Method 이므로 웹에서 주로 많이 쓰인다. HTTP 를 더 설계된대로 정확하게 사용하고자 하는 것이다. 스프링도 REST API를 보고 자기들이 안에 포함시켜놓은 것이다. 참고 - 그런 REST API로 괜찮은가 POST만 쓰는 레거시 코드가 있는데 이거 이래도 되나요? REST API가 반드시 따라야 하는 법칙이 아니고 GET, POST, PUT, DELETE 다 사용하는 곳도 있고 GET, POST 만 사용하고 POST를 데이터 처리, GET을 데이터 조회로 사용 GET이나 POST 하나만 사용해도 문제는 없는데 REST API라는 것은 같은 URI 요청을 날릴 때 METHOD(GET, POST, PUT, DELETE)에 따라서 동작을 달리 하는것이기 때문에 그걸 REST API를 사용했다고 말할 수는 없다. 어떤 방식이든 간에 정해진 규칙이 있느냐 그 규칙이 합리적이냐, 이유, 논리가 있냐 이런게 중요하다. 한 화면에서 회원 정보, 회원이 주문한 주문 목록, 위시리스트 정보가 나온다고 했을 때, 세번 리퀘스트를 날려야 하는가? REST API에서는 그렇다. 회원 정보를 조회하는 URI에 주문목록, 위시리스트도 담아서 보내주면 되지 않느냐? 매번 다 담아서 보낸다? 말도 안된다. 파라미터에 조건을 줘서 추가로 조회해오거나 아니거나 하게 작성하면 안될까? 합리적이다. 근데 점점 복잡해진다. 어려워진다. 모르면 못쓴다. 동적으로 Response 모양을 만드는 GraphQL이란게 있다. 정확히 어떤 방식인지 안써봐서 모른다. 그래서 웬만큼 많이 리퀘스트가 발생하지 않는다면 그냥 여러번 갔다와도 큰 문제는 없다. 다음번 스터디 주제 스프링 기본 챕터 2 까지 칸아카데미 자바스크립트 자율 학습
2021. 06. 27.
0
[스터디]스프링 리액트 스터디 2회차 스프링 기초 + HTML&CSS
스터디 팀 명 한발 🙂 스터디 진행 회차 및 일자 2회차(2021.06.13) 스카이프 콜 스터디 주요 내용 reset.css / z-index 템플릿 엔진 / MVC / API 관심사의 분리 / 역할과 책임 ViewResolver / HttpMessageConverter Optional 서비스는 비즈니스적으로 이름을 짓고 리포지토리는 기계적으로 테이블적으로 이름을 짓는다. 테스트는 잘 터지는지도 봐야 된다. 크기 단위 이거만 알면 된다 - px, rem, em, vw, vh, % 이미지 링크와 이미지 맵 이미지 맵은 한 이미지 안에서 커서 위치에 따라 다른 링크를 연결해 주는 기능 스터디에서 나왔던 질문 @Controller, @Service, @Repository 각 어노테이션에 역할이 있나요? 서버 MVC 구조에서 Controller는 어떤 단위로 작성되야 할까? 프록시 패턴 AOP에도 이 패턴이 활용된다. 템플릿 메서드 패턴 출처 : https://yaboong.github.io/design-pattern/2018/09/27/template-method-pattern/ 개방 폐쇄 원칙(OCP, Open-Closed Principle) §소프트웨어 개체(클래스, 모듈, 함수 등등)는 확장에 대해 열려 있어야 하고, 수정에 대해서는 닫혀 있어야 한다. 어떻게 하면 되는가? §객체 지향 프로그래밍 언어에서는 인터페이스를 통한 추상화를 제공한다. 언제 신경써야 하는가? §다른 곳에서 사용되는 개체인 경우(말단 개체인 경우 신경 X) 양방향으로 서로를 아는 개체의 경우 문제가 복잡해진다. §상하 관계를 가지는게 프로그램 이해가 간편하다. §필요한 경우만 양방향 관계를 가지도록 해야 한다. 스프링 Controller에서 파라미터에 (요청 수신에) 사용되는 어노테이션 목록 @PathVariable §중괄호에 명시된 값을 변수로 받는다. §public String userInfo(@PathVariable("id") String id) @RequestParam §http 요청 파라미터를 변수로 받는다. (생략가능) §@RequestParam(value = "page", required = false, defaultValue = "1") Integer page @ModelAttribute §http 요청 파라미터를 VO로 받는다.(생략가능) §public ModelAndView search(@ModelAttribute User user) @RequestBody §HTTP 요청의 body 부분을 그대로 변수에 넣는다. XML, JSON 일 때 이것을 주로 사용한다. §public String message(@RequestBody KakaobotRequest request) @CookieValue : 요청의 쿠키정보를 가져온다 @RequestHeader : 요청 헤더 정보를 가져온다 HTML Entity 코드가 뭐지? Reserved characters in HTML must be replaced with character entities. 특정 글자로 변환되는 HTML의 예약어 자주 쓰는거에 가 있다. https://entitycode.com/ https://dev.w3.org/html5/html-author/charref 어떤 객체들을 자원 관리 대상으로 봐야 하는가? 무거운 객체 - 자원 관리의 이유. 무거운걸 매번 맨들고 부수고 안하려고 여러개 있으면 문제가 되는 객체 - 필수 하나만 있으면 되는 객체 - 옵셔널 하다. 참고 - Why are static variables considered evil? - 스태틱 변수란 여기저기서 쓰려고 만드는 것이고 --> 스태틱 변수에 의존하여 state한 코드가 늘어나고 --> 테스트하기가 어려워진다. 테스트 코드를 작성하면 좋다는데 어떻게, 어느 수준까지 테스트를 작성하면 될까? 클라이언트 - 특정 기능에 참여하는 요소의 상태와 기능 발현에 따라서 어떻게 동작하는지 테스트 하면 된다. - 상태 전이 테스트 서버 - 기능 별로 인풋 아웃풋 확인. 문제 상황, 일반적 상황, 밸리데이션 처리 확인, 아무것도 없는 값 처리 - 기능이 여러 단계를 거치는 경우 각 단계를 별도 테스트, 하나로 모아서 테스트 - 제약 동작 확인. 널 처리, 길이 처리, 코드 처리, regex 처리, 실무에서 dl, dd, dt 태그를 쓰나요? Optional를 서버에서 그대로 반환하면 JSON 포맷으로 어떻게 변환되고 클라이언트에서 무엇을 받는가? ??? 모른다. 수업에서는 강사님이 인텔리제이를 써서 VS Code로 실습하려니 안되는 기능이 많다. VS Code에도 웬만한 기능은 다 존재한다. 컨트롤 + 점(.) 을 누르면 나오는 메뉴 활용 - 람다 표현식으로 전환 - 반환값이 있는 경우 변수를 추출하는 기능
2021. 06. 27.
0
[스터디]스프링 리액트 스터디 1회차 스터디 규칙 및 커리큘럼 결정
스터디 명 한발 이번 스터디가 끝난 뒤 얻고 싶은 것 스프링 / JPA 에 대한 깊은 이해 + HTML, JS, 리액트까지 학습하여 웹 개발자 되기 커뮤니케이션 하는 방식 - 스카이프 / 노션 스터디 참여자 역할 - 인프런 블로그에 스터디 일지 작성 - 스터디 일정 및 출석체크 관리 - 토픽을 뽑아서 정리해오기 스터디 규칙 진도 점검 공부 내용은 깃헙에 각자 체크인한다. 짝을 정해서 서로 공부해왔는지 검사한다. 사전에 통지하지 않고 진도를 나가지 않은 경우 벌금 5천원 스터디 진행 방식 모두가 공부해오도록 하는 것이 목표 한 명이 발표해오면 그 사람만 공부한다. 키워드를 정해오면 순서대로 돌아가면서 그에 대해서 얘기한다. 서로 이런게 좋았다. 새로 이런걸 배웠다. 이해 안가는 부분에 대한 Q&A 돌아가면서 한마디씩 진행 가능한 경우 코드 리뷰도 진행 코드 리뷰에 대한 학습 필요 스터디 시간 – 매주 일요일 저녁 8시 부터 6월 5일 일요일 부터 시작 코드리뷰와 짝 개념 짝의 역할 상대방의 코드를 받아서 실행시켜본다. 코드를 한줄한줄 살펴본다. 복습하는 개념 + 상대방의 코드에서 배운다 + 개선점 찾아보기 수업을 잘 들었는지 확인한다. 짝의 목적 누군가 내 코드를 본다는 느낌을 주려고. 긴장감 서로 코드를 보고 배우자 커밋도 누가 보니까 상대방이 보기 좋게 해야한다는 점 코드 리뷰에 대한 이해 https://engineering.linecorp.com/ko/blog/effective-codereview/ https://blog.logi-spot.com/코드리뷰의-진짜-목적은-따로있다/ https://tech.kakao.com/2016/02/04/code-review/ https://woowabros.github.io/experience/2021/02/09/cory.html https://woowabros.github.io/techcourse/2020/06/05/techcourse-javable.html https://velog.io/@zetlos/소스코드-리뷰에-대한-짧은-이야기/ 짝짓기 방법 코드 리뷰, 검사 방식 노티 받는 법 전체 일정