Node.js

Node.js

[Node.js] iamport 결제 실패 시의 상황 대처법

결제시스템은 결제를 한다고 다가 아닙니다. 아이엠포트를 결제를 한다고 치면 프론트에서 결제 창이 뜨고 결제 완료가 됩니다. 그리고 그 결제완료된 내용을 서버로 보내고 서버에선 디비에 저장하게 됩니다. 그런데 프론트에서 결제 승인이 났는데 뜻밖의 이슈로 서버가 다운됐다고 쳐봅시다. 그럼 유저 입장에서 돈은 빠졌나갔는데 자신의 결제기록을 볼 수 없죠? 그러므로 안전하게 이를 핸들링하기 위해 상태값 중 결제 대기 상태를 만듭니다. 그래서 유저가 프론트에서 아이엠포트를 이용하기 전에 결제 대기 상태로 서버에 데이터를 보내줍니다. 결제 대기를 포함한 아이엠포트 서버 코드 예시들을 보여드리겠습니다. 우선 결제 대기 로직입니다. // 결재 대기 로직 WaitAccept : async (req, res) => { tr..

Node.js

[Node.js] prototype 사용예시

1. 클래스 선언을 한다. class User{} 2. 객체를 가져오는 방법은 아래의 양식이 된다. const user = new User() 이 객체의 프로토타입은 User.prototype 이 된다. 3. 객체에 새로운 프로퍼티를 추가해줄 수 있다. User.prototype.Hello = () => { console.log('user') } Hello라는 메소드가 프로퍼티로써 추가되었다. 이 프로퍼티는 콘솔에 user 를 출력해준다. 4. user라는 이름으로 선언된 User 프로토타입 안에 있는 Hello 프로퍼티를 콘솔로 찍어본다. console.log(user.Hello()) user가 출력될 것이다.

Node.js

[Node.js] prototype 이란

원문 : http://www.tcpschool.com/javascript/js_object_prototype 자바스크립트의 모든 객체는 프로토타입(prototype)이라는 객체를 가지고 있습니다. 모든 객체는 그들의 프로토타입으로부터 프로퍼티와 메소드를 상속받습니다. 이때 상속되는 정보를 제공하는 객체를 프로토타입(prototype)이라고 합니다. 프로토타입 체인(prototype chain) 자바스크립트에서는 객체 이니셜라이저를 사용해 생성된 같은 타입의 객체들은 모두 같은 프로토타입을 가집니다. 또한, new 연산자를 사용해 생성한 객체는 생성자의 프로토타입을 자신의 프로토타입으로 상속받습니다. var obj = new Object(); // 이 객체의 프로토타입은 Object.prototype입니다..

Node.js

[Node.js] RabbitMQ

목표 : RabbitMQ를 이용하여, 데이터를 임시로 저장하고 확인해봅시다. RabbitMQ는 디비 또는 데이터 처리에 문제가 생겼을때 데이터를 임시로 처리해줄때 많이 사용합니다. 예를 들면, 채팅방에 한명은 실시간 접속 상태지만 한명은 접속 상태가 아닐때, 중간에 들어오면 채팅 내용이 보여야하는데 데이터가 느리게 들어오면 실시간 통신에 문제가 됩니다. 그래서 실시간 채팅은 항시, RabbitMQ 혹은 Redis 처럼 캐싱기능이 있는 저장소에 담을 필요가 있습니다. 우선적으로 RabbitMQ 서버를 설치하여, 실행시켜야합니다. https://www.rabbitmq.com/#getstarted 완료되었으면 디렉토리를 생성하여 기본 노드 서버를 세팅합시다. app.js const express = requi..

Node.js/TypeScript

[Node.js] express + TypeScript로 회원가입 구현

타입스크립트 맛보기 연습을 해보겠습니다! 우선 프로젝트 폴더하나 생성하고, package.json을 작성해볼까요 package.json { "name": "TypeScript", "version": "0.0.1", "main": "app.ts" } 타입스크립트로 만들 프로젝트니 main은 당연히 js가 아니라 ts파일이겠죠 app.ts를 파일을 생성하세요. 미리 필요한 내용을 작성해두겠습니다. import express from 'express'; import cors from 'cors'; const app = express(); app.use(cors()); app.use(express.json()); app.use(express.urlencoded({ extended: false })) app.li..

Node.js/MyTodoList

[Node.js] 05. Sequelize

시퀄라이즈를 쓰는 이유는 자바스크립트 구문을 알아서 SQL로 바꿔주기 때문입니다. 따라서 SQL 언어를 직접 사용하지 않아도 자바스크립트만으로 MySQL을 조작할 수 있습니다. 시퀄라이즈를 사용해봅시다. 시퀄라이즈를 이용하면 js로 테이블을 만들 수 있습니다. 프로젝트와 함께 테이블 정보를 저장할 수 있어서 유용하겠죠. 그리고 시퀄라이즈 구문이 sql구문보다 사용하기가 간단해서 편리합니다. 시퀄라이즈를 사용하려면 설치해야겠죠. 서버에 시퀄라이즈를 설치합니다. $ npm i sequelize 설치가 완료되었으면, MyTodoList에 model 폴더를 생성합니다. 1. index.js 작성 시퀄라이즈를 사용하기 위해 index.js 파일을 만들어서 import 시킵니다. const fs = require(..

Node.js/MyTodoList

[Node.js] 04. CSS와 SCSS

우선 브라우저에서 기본적으로 적용시키는 css를 리셋시키고 직접 작업을 하기 위해 index.css에서 초기화를 시켜줍니다. (정석이 아닌 제 커스텀이니 여러분이 원하는 항목은 스스로 수정해서 커스텀하시기 바랍니다.) @charset "utf-8"; /* Webfont Setting : 1. font-family: 'Roboto', sans-serif; 2. font-family: 'Nanum Gothic', sans-serif; 3. font-family: 'Open Sans', sans-serif; 4. font-family: 'Lato', sans-serif; 5. font-family: 'Noto Sans KR', sans-serif; 6. font-family: 'Teko', sans-serif..

Node.js/MyTodoList

[Node.js] 03. React

마지막에 css를 제공할 예정이니, 각 태그들의 클래스명은 되도록 똑같이 따라하시길 바랍니다. 1. 설치하기 리액트를 만들기 위해 터미널에서 + 버튼을 눌러 새 터미널을 만듭니다. 경로가 MyTodoList에 있는지 잘 확인한 후, 아래 내용을 입력해서 리액트를 설치합니다. $ npx create-react-app client cd client npm start 경로를 클라이언트로 바꾸고 리액트를 실행시켜봅시다. 이 화면이 나온다면 성공입니다. 우선 서버와 클라이언트를 연결해줘야 합니다. 기존의 package.json이 아닌 클라이언트 안에 있는 package.json에 접근해서, "proxy": "http://localhost:8080" 이 항목을 추가합니다. 2. 파일 수정 및 정리 client>sr..

Node.js

[Node.js] artillery, pm2, morgan 모듈을 이용한 로드밸런싱

우선 연습하다 발생한 log들을 저장하기 위해 morgan 모듈을 설치하여 app,js에 이와같이 선언해주었습니다. const logger = require('morgan') app.use(logger('dev')); artillery 모듈은 가상으로 사용자 수를 지정하여 서버에 과부하가 걸리는지 테스트합니다. artillery 모듈을 설치하고 cpu-test.yaml 파일을 생성하여 이와 같이 작성했습니다. config: target: "http://localhost:8080" # host phases: - duration: 30 # 해당 초만큼 실행 arrivalRate: 3000 # 가상 사용자 수 scenarios: - flow: - get: url: "/user" # setParam에서 넣은 I..

Node.js/MyTodoList

[Node.js] 02. REST API

"Representational State Transfer” 의 약자 REST 는 네트워크 아키텍처 원리의 모음이다. 여기서 '네트워크 아키텍처 원리'란 자원을 정의하고 자원에 대한 주소를 지정하는 방법 전반을 일컫는다. 간단한 의미로는, 웹 상의 자료를 HTTP 위에서 SOAP이나 쿠키를 통한 세션 트랙킹 같은 별도의 전송 계층 없이 전송하기 위한 아주 간단한 인터페이스를 말한다. 출처: 위키백과 1. Postman을 사용하여 통신 확인 app.js에 작성해두었던 //익스프레스가 지원해주는 restAPI app.get('/', function (req, res) { res.send('Hello World') }) 이 부분도 rest api에 해당하는 영역입니다. 여기서 app은 express모듈을 사용..

Node.js/MyTodoList

[Node.js] 01. 시작하기(express)

Node.js와 React를 이용하여 나만의 Todolist를 만들어봅시다. Todolist를 이용하면 기본적인 데이터 처리 기능 CRUD(create, read, update, delete)를 구현할 수 있으므로 모든 API 시작과 끝을 맛볼 수 있게 됩니다. 학습목록 NodeJS MySQL Express Sequelize React 1. 환경세팅 에디터는 vscode를 이용하도록 하겠습니다. 없으신 분들은 설치하시면 됩니다. 제가 사용하는 vscode extension에 관한 정보는 추후에 업데이트 하도록 하겠습니다. node와 mySQL도 자신의 환경에 맞게 설치합니다. 2. 원하는 위치에 MyTodolist폴더를 생성합니다. 저는 onedrive때문에 바탕화면이 아닌, user 디렉토리 안에 my..

hyun_ji
'Node.js' 카테고리의 글 목록