728x90

BackEnd 61

ExpressJS Create Project

프로젝트 생성 Node Express 설치 npm install express-generator -g Node Express 프로젝트 생성 express --no-view backend 'backend' : 프로젝트 이름 Node Express 폴더 이동 cd backend Node Express package.json 생성 npm init Node Express 서버 실행 npm start 만약 "Error: Cannot find module 'http-errors'" 에러 시 npm install 최초 Dependency cookie-parser 쿠키 헤더를 구문 분석하고 req.cookies를 쿠키 이름으로 키가 지정된 개체로 채웁니다. 선택적으로 다른 미들웨어에서 사용..

BackEnd/ExpressJS 2023.04.16

Request PathVariable Enum Converter

개요 API 개발 도중 @PathVariable를 enum Type으로 설정 하였다. 이러다 보니 한가지 오류가 발생했는데 Enum에 없는 데이터가 넘어 오면 Exception이 발생 하였습니다. 이를 해결하기 위해 Spring Boot Converter를 사용하였습니다. 이는 @PathVariable 뿐만 아니라 @ModelAttribute, @RequestParam에서도 동작 한다고 되어 있다. 따라서 외부에서 날라오는 데이터를 바인딩 하는데 Header에 있는 데이터 뿐만 아니라 Body에 있는 데이터도 되는지 한번 확인해 봐야 할꺼 같다.(Stack Over Flow에서 비슷한 질문인데 확인 해봐 야 할거 같습니다.) Spring Boot Document Spring 3.0 Document에는 이..

BackEnd/Spring Boot 2023.04.16

Enum 등록된 값 이외에 값 등록시

개요 Enum에 잘못된 값을 넣게 되면 오류가 뜨게 되므로 이를 방지 하기 위해 @JsonCreator을 사용 코드 public enum LangCode { KO, JA, EN; // Enum에 데이터를 입력 하면 실행이된다. // 원하는 데이터가 없으면 null이 입력이 된다. @JsonCreator(mode = JsonCreator.Mode.DELEGATING) public static LangCode findByCode(String name) { return Stream.of(LangCode.values()) .filter(c -> c.name().equals(name.toUpperCase())) .findFirst() .orElse(null); } }

BackEnd/Spring Boot 2023.04.16

TypeHandler

개요 Mysql 과 Mybatis로 개발을 진행 하였습니다. Paging 처리된 List를 불러오는 도중 하나의 Row에 특정 code list를 한번에 불러 왔어야 했습니다. 그러다 보니 Left Join과 Limit을 처리 하면 code list 별로 짤린후 resultMap이 되어 Collection을 사용해도 정확한 Paging 데이터를 가져올수 없었습니다. 그래서 서브쿼리에 GROUP_CONCAT을 사용하여 Code List를 한번에 문자로 받아 왔습니다. 하지만 이는 String으로 넘어 오기 때문에 List Type 으로 각각 쪼갤려면 서버에서 for문을 돌려서 하나하나 split 하여야 했습니다. 이러한 동작을 별도로 하기 전에 TypeHandler를 사용하여 resultMap에서 데이터를..

BackEnd/Spring Boot 2023.04.16

Exception Handler

개요 RestAPI 개발을 하다가 외부 에서 API요청시 잘못된 Path로 MissingPathVariableException이 발생할때가 있었다. Exception이 뜨는건 좋은데 Log에 Exception이 같이 기록 되는데 매우 보기 안 좋았다. 그래서 ExceptionHandler를 사용하여 잘못된 요청이라는 Json을 Return하도록 설정 하였다. 수정 코드 // Exception이 발생하면 CustomExceptionHandler을 체크 하겠다는 어노테이션입니다. @RestControllerAdvice public class CustomExceptionHandler { // ()안에 작성되는 Exception을 Handler역활을 하겠다는 어노테이션입니다. @ExceptionHandler({..

BackEnd/Spring Boot 2023.04.16

War VS Jar

War, Jar 차이 Archive 직역 : 보관소 서버 에서의 뜻 : 참고용 데이터 보관소 Applet 플러그인의 하나로서 전용 위젯 엔진이나 더 큰 프로그램 범위 내에서 실행되는 특정한 작업을 수행하는 조그마한 응용 프로그램을 말한다. What is JAR. Java Archive Zip 파일 형식 기반으로 압축을 풀지 않아도 사용 가능 하며 파일 사이즈도 작다 .jar 확장자 파일에는 Class와 같은 Java 리소스와 속성 파일, 라이브러리 및 액세서리 파일이 포함되어 있습니다. JAR 파일은 원하는 구조로 구성이 가능하며 JDK(Java Development Kit)에 포함하고 있는 JRE(Java Runtime Environment)만 가지고도 실행이 가능합니다. JAR 파일은 서버가 포함된 ..

BackEnd/Spring Boot 2023.04.16

AOP란?

정의 및 용어 설명 AOP(Aspect-Oriented Programming)는 프로그램 구조에 대한 또 다른 사고 방식을 제공하여 객체 지향 프로그래밍(OOP)을 보완합니다. OOP에서 모듈화의 핵심 단위는 클래스인 반면, AOP에서 모듈화의 단위는 측면입니다. Aspect는 여러 유형과 객체를 가로지르는 관심사(트랜잭션 관리 등)의 모듈화를 가능하게 합니다. (이러한 문제는 종종 AOP 문헌에서 "crosscutting" 문제라고 합니다.) Spring FrameWork에서 AOP AOP 용어 설명 영문을 구글 번역이나 직역으로 하면 이해 하기 어렵기 때문에 영문을 보고 이해한 내용으로 해석 하였습니다. 필히 참고시 영문 문서를 확인해 주세요 Aspect A modularization of a con..

BackEnd/Spring Boot 2023.04.15

Cookiecutter

Django를 개발 하다보면 초기 설정이 복잡하다. 그래서 CookieCutter을 사용한다. Spring과 Spring Boot의 느낌인거 같다. CookieCutter Hub https://github.com/cookiecutter/cookiecutter-django Cookiecutter 명령어 설치 pip install "cookiecutter>=1.7.0" 실행 cookiecutter https://github.com/cookiecutter/cookiecutter-django 설치시 Option Cloning into 'cookiecutter-django'... remote: Counting objects: 550, done. remote: Compressing objects: 1..

BackEnd/Django 2023.04.15

Document 프로젝트 생성

Git 주소 https://github.com/Raconer/django-basic 참고 유투브 https://www.youtube.com/watch?v=-Nmtakm70Ro Django Document https://docs.djangoproject.com/en/3.2/ 프로젝트 목적 사람들이 설문 내용을 보고 직접 투표할 수있는 개방된 사이트 관리자가 설문을 추가, 변경, 삭제할 수 있는 관리용 사이트 View 페이지 구성 질문 《색인》 페이지 – 최근의 질문들을 표시합니다. 질문 《세부》 페이지 – 질문 내용과, 투표할 수 있는 서식을 표시합니다. 질문 《결과》 페이지 – 특정 질문에 대한 결과를 표시합니다 투표 기능 – 특정 질문에 대해 특정 선택을 할 수 있는 투표 기능을 제공합니다. 기본 단어..

BackEnd/Django 2023.04.15
728x90