본문 바로가기

Backend

(112)
출근길에 읽은 IT) REST API 설계 정리(노마드코더) REST API에 대해 본론부터 들어가자면, REST API 설계시 피해야 할 사항 ex) /seeMovies, /getMovie/inception, /deleteMovie/inception과 같이 add,edit,delete 같은 단어를 쓰지 않는다. (동사 X) URL에서 다 삭제해야 한다. REST API 설계시 좋은 예시 /Movies /Movie/inception /Movie/Titanic /TopRatedMovies /MoivesFromThisYear -> 갖게되는건 명사뿐! 복수형, Collection Movies -> /movies 영화 컬렉션 목록에서 인셉션만 뽑는다면 -> /movies/inception URL 만들기 ex) /movies+고유 식별자로 URL 생성 + HTTP Meth..
enum 클래스 내부의 열거체 상수는 대문자로 작성하는 이유가 무엇일까? enums 패키지를 작성하면서 항상 이 안에 들어가는 열거된 데이터들은 항상 대문자로 쓰이고 있다. enum Season { // 열거 상수 SPRING, SUMMER, FALL, WINTER, } 위와 같은 모습으로 말이다. enum 클래스를 몇 번 작성해보니까, 왜 enum 클래스 내부의 열거된 데이터들은 모두 대문자로 작성하는걸까?에 대한 의문이 생겨서 찾아보았다. enum은 Enumeration(열거)의 약자로 우리가 가끔 데이터를 저장할 때 한정된 값으로만 데이터를 저장해야 할 때 사용한다. 4계절 같이 데이터의 개수가 정해져있다거나 할때 사용할 수 있다. - 문법적으로 정해진 규칙은 아니지만 열거형 이름이나 값을 정의할 때 대문자만 사용하는 경우가 많다. - enum 키워드는 반드시 소문자로..
Column 이름 짓기 규칙 정리 (+변수명,컬럼명 이름 지어주는 사이트) Entity를 설계하는 과정에 있어 Column의 이름을 짓는데 어려움을 겪었다. Figma 화면 상에 있는 단어 자체가 어렵다보니, 나름 파파고로 번역도 해가며 Column 이름을 지었지만 계속 이름이 길어지는 것 같고, 단어가 어려운 것 같아 Column 이름을 짓는 규칙을 찾아보았다. 1. 대문자를 사용한다 2. 단어와 단어사이는 _ 로 구분한다. 3. 약어를 사용한다 4. 단어는 8자리를 넘을 수 없다 5. Primary Key가 단어에서 가장 우선한다 6. Not Null Column이 우선한다 7. Null Column은 Data, Number, Char 순으로 한다. 추가로, 프로그래머들이(난 프로그래머라고 지칭하긴 아직 아니지만ㅠ) 변수나 컬럼명 등의 이름을 지을 때 가장 힘들어하는데, 이..
차트 데이터 볼 때 유의사항 +) Cron이란? Figma 화면으로 설계된 서비스의 페이지에 차트 데이터가 삽입되어 있었다. 처음의 나의 사고과정은 이랬다. 1) chart.js 같은걸로 따로 차트를 만들어줘서 사용자단에서 보여줘야 하는가? 2) 차트 데이터를 긁어오는 API를 이용해서 프론트 단에서 보여줘야 하는가? 와 같은 생각을 했었다. 하지만 ERD를 설계하고 피드백을 받고보니 아예 다른 접근법이었다. 1) 차트에서 x,y축 데이터를 본다. 2) x축의 기준이 무엇인가? -> 날짜이다. 3) 날짜에서도 1분..N분 주기로 데이터를 긁어오지 않느냐. -> 맞습니다 4) 그럼 그거에 따라 Nest.js에서 cron을 이용하여 주기별로 데이터를 긁어오는 동작을 해야 하지 않겠냐 였다. 결론적으로, 주기별(1분,10분,N분..)로 자동적으로 데이터를 ..
REST API 규칙 REST API를 만들때 어떤 점을 주의해야할까? 문득 생각이 들어 찾아보았다. 앞으로 API를 만드는데 있어 정리해놓고 한 번 참고하면 좋을 것 같다. 1. 마지막에 / 를 포함하지 않는다 (X) http://api.test.com/users/ (O) http://api.test.com/users 2. underbar 대신에 dash를 사용한다 (X) http://api.test.com/hello_world (O) http://api.test.com/hello-world 3. 소문자를 사용한다 - camelCase 적용X 프로그래밍을 하다보면 camelCase가 익숙하다보니 이걸 RestApi를 설계할때도 반영이 되는 것 같은데, API를 작성할때는 지양하는것이 좋다. (X) http://api.tes..
ERROR [ExceptionHandler] Nest can't resolve dependencies of the UsersController (?). Please make sure that the argument UsersService at index [0] is available in the AppModule context. 문제 상황 $ nest g resource Users 위의 명령어를 터미널로 입력했는데 intelliJ 터미널에서 계속 아래와 같은 에러가 출력되었다. Mac Terminal에서는 아래와 같이 에러가 출력되어 중복 이슈인가?싶어서 tsconfig.json의 "skipLibCheck": true, 를 확인했는데도 true로 설정이 되어있어서 뭐지 싶었다. 문제 해결 app.module.ts 부분에서 providers 부분에서 AppService는 등록이 되어있으나 UsersService 등록이 되어있지 않았다. -> 만든 모듈은 모두 app.module.ts에 모두 등록을 해주어야 한다. 근데 의문. UserController는 controllers에 자동으로 등록이 되어있었는데 왜 providers - ..
Terminal과 IntelliJ 터미널 결과가 다르다? 문제 상황 분명 IntelliJ에서 Users 폴더에서 Error 부분에 있는 파일명을 지웠는데 에러가 발생하는 것이다. 문제 해결 Mac Terminal하고 intelliJ 터미널하고 반영에 있어서 무언가 차이가 있었던건지? IntelliJ에서는 바로 Users 폴더가 만들어지고 위의 에러가 발생하지 않았는데 Mac Terminal에서는 같은 오류가 계속 발생하고 있었다. 그래서 Mac에서는 해당 프로젝트에서 1) ls 명령어로 파일 확인 2) src > Users(or users) 디렉토리 삭제 3) nest g resource Users로 재설치 그래도 Mac 터미널로 관리하는게 좋긴 한 것 같다. 저런 시차? 똑같은 터미널 환경인데 왜 한 부분에만 반영이 되는지에 대한 의문은 아직 풀리지 않았다..
npm과 nest 명령어를 헷갈리다니 - undefined 오류 문제 상황 프로젝트 위치에서 Users에 관한 보일러플레이트 코드를 설정하려고 맥 터미널에 명령어를 입력했는데 계속 undefined 오류가 발생하는 것이다. 어디서 선언이 안되어서 그런가?하고 생각했다. 해결 방법 nest g resource Users 위와 같이 입력해줘야 undefined 오류가 사라진다. 이런 실수는 다시 하지 않기!
NestJs에서 ReferenceError: Request is not defined 에러 발생시 해결방법 (feat. express) 문제 상황 NestJs를 이용하여 클라이언트 > 서버로 HTTP 요청 객체(req)를 보내려고 했는데 계속 ReferenceError: Request is not defined 라는 에러가 발생했다. 무언가 참조가 안되고 있는 것 같았다. 문제 코드와 상황 app.controller.ts 파일에서 express 요청에 대한 import가 없는 상황이었다. 해결 방법 HTTP에 대한 요청이 들어갈때마다(브라우저에서 새로고침) 인텔리제이 콘솔창에서 아래와 같은 요청값이 출력되었다. body: {}, route: Route { path: '/', stack: [ [Layer] ], methods: { get: true } }, [Symbol(kCapture)]: false, [Symbol(kHeaders)]:..
Nest.js 기본 구조 정리 1. eslintrc.js 개발자들이 특정한 규칙을 가지고 코드를 깔끔하게 짤 수 있게 도와주는 라이브러리 Typescript를 쓰는 가이드라인 제시, 문법에 오류가 나면 알려주는 역할 등등 2. prettierrc 코드 형식을 맞추는데 사용. 작은따옴표 ' 를 사용할지, 큰따옴표 " 를 사용할지, Indent(띄어쓰기) 값을 2줄로 할지 4줄로 할지 등등. 코드 포맷터 역할 3. nest-cli.json nest 프로젝트를 위해 특정한 설정을 할 수 있는 json 파일 4. package.json build : 운영환경을 위한 build format : lint에러가 낫을지 수정 start : 앱 시작 -> (개발 환경시에는 npm run start : dev) 5. tsconfig.build.json..