Backend 23

Node.js - Express.js와 REST API (2)

자바스크립트의 Array 함수 사용하여 데이터 처리 구현 router와 route handler 사용해 HTTP요청, 응답 처리 구현 (1) 메모 목록 구현하기 - models/note.js note라는 모델을 모듈로 선언 let notes = [// 데이터들 { id: 1, title: 'first note', content: 'My first note' } ]; exports.list= () => { // list를 내보내기 위한 exports return notes.map(({ id, title }) => ({ id, title, })) } map이라는 배열 함수를 사용하여 { id, title }를 하나씩 순회하여 받아옴 - routes/not..

Backend/Node.js 2022.02.20

Node.js - Express.js와 REST API (1)

1) Middleware 미들웨어는 Express.js 동작의 핵심으로, HTTP 요청과 응답사이에서 단계별 동작을 수행해주는 함수다. 2) 미들웨어의 작성과 사용 const middle = (req, res, next) => { ... next(); } const middle2 = (req, res, next) => { ... next() } next(); } 위의 코드처럼 req, res, next를 인자로 갖는 함수를 작성하면 미들웨어가 된다. next() 함수를 통해 다음 미들웨어를 호출하는 것이다. next() 함수가 호출되지 않으면 미들웨어 사이클이 멈추기 때문에 주의해야한다. - 어플리케이션 미들웨어 app.use((req, res, next) => { ... next()// 첫 번째로 실행..

Backend/Node.js 2022.02.20

Node.js - 웹과 Express.js

1) 웹 서비스 동작 방식 브라우저가 인터넷을 통해 HTTP 요청을 서버에 전달 → 서버는 사용자의 HTTP 응답을 브라우저로 전송 → 브라우저는 HTTP 응답을 사용자에게 적절한 화면으로 노출 ===HTTP 요청 예시=== GET / HTTP/1.1 Host: localhost:3000 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:93.0) Accept: text/html Accept-Language: ko-KR Accept-Encoding: gzip, deflate Connection: keep-alive 요청 - 어떤 사용자가 어떤 데이터를 필요로 하는지 등을 담고 있다. ===HTTP 응답 예시=== HTTP/1.1 200 OK X-Powe..

Backend/Node.js 2022.02.20

Node.js - NPM과 모듈

1) NPM Node Package Manager의 약자로 Node.js 프로젝트를 관리하는 필수 도구다. (온라인 저장소 + 커맨드라인 도구) 온라인 저장소: 오픈소스 라이브러리와 도구들이 업로드되는 저장소 커맨드라인 도구: 프로젝트 관리를 위한 다양한 명령어 제공 2) NPM 사용 ( 간단한 프로젝트 시작에만 필요한 내용만을 함축적으로 다루겠다.) - 프로젝트 생성하기 $npm init 프로젝트 디렉터리를 생성한 뒤, 해당 디렉터리 안에서 init 명령어를 사용하여 프로젝트가 생성 가능하다. 사진 처럼 몇 개의 질문이 나올 텐데 처음엔 필요한 거 빼고 그냥 모두 엔터. 그럼 package.json 이라는 파일을 만들어준다. * 여기서 package.json이란? 프로젝트 관련 정보들이 저장되는 파일로..

Backend/Node.js 2022.02.18

Node.js 이해

1) Node.js Node.js는 자바스크립트를 어느 환경에서나 실행할 수 있게 해주는 실행기다. 브라우저에서 실행하는 자바스크립트는 웹 내부 제한된 동작만을 수행하지만, Node.js는 크로스 플랫폼 실행이 가능하고 동작에 대한이 없으며, 다양한 어플리케이션 개발이 가능하다. - Node.js는 싱글 쓰레드, 비동기, 이벤트 기반이다. 쓰레드란, 명령을 실행하는 단위로서 한 개의 쓰레드는 한 번에 한 가지 동작만 실행 가능하다. 비동기란, 동작을 실행한 후 완료가 되기를 기다리지 않고 다른 동작을 바로 실행하는 것이다. 이벤트 기반이란, 비동기 동작의 완료를 처리하는 방법이다. 어떤 비동기 동작이 완료될 경우 실행할 함수를 미리 등록한다. 그리고 동작이 완료되면 그 함수를 실행한다. 2) ES6 EC..

Backend/Node.js 2022.02.18

Flask 기초 I - SQL Alchemy

1) SQL Alchemy와 ORM ORM 데이터베이스에 객체를 통해 접근하는 방법을 ORM (Object Relational Mapping, 객체 관계 매핑)이라고 한다. ORM은 SQL 질의어 없이 DB를 다룰 수 있도록 도와준다. 아래와 같은 테이블이 있다고 해보자. 테이블 명은 user다. name age hayan 25 eunsol 26 user 테이블에 대한 아래 두 코드는 같은 행위를 수행하는 코드이다. * SQL쿼리문: INSERT INTO user (name, age) VALUES('hayan', 25); * ORM: member = Member() member.name ='hayan' member.age = 25 db.session.add(member) db.session.commit(..

Backend/Flask 2022.02.16

Flask 기초 I - RDB와 Flask 상호작용, 간단한 게시판, Flask JWT

1) RDB와 Flask 상호작용 RDB은 간단하게 설명하자면 관계형 데이터베이스로 NoSQL과는 다르게 정형화된 데이터베이스이다. 키와 값들의 간단한 관계를 테이블화 시킨 데이터베이스이다. 파이썬은 오픈소스와 상용 데이터베이스에 대한 대부분의 데이터베이스 엔진을 위한 패키지를 가지고 있다. RDB와 Flask의 상호작용을 통해 Flask에서 입력받은 내용을 DB에 저장할 수 있다. 상호작용을 그림으로 표현한 것이다. 클라이언트가 서버에 데이터를 요청하면 flask는 데이터베이스에 그 데이터가 있는지 확인하고 처리한다. 2) 간단한 게시판 만들기 DB에 저장되는 데이터를 활용하여 사용자를 검색해보기 DB에 저장되는 데이터를 활용해서 사용자를 추가해보기 (중복 사용자 방지) 게시판 내용을 생성, 조회, 수..

Backend/Flask 2022.02.11

Flask 기초 I - Blueprint, Jinja2, 로그인 구현, 로깅

1) Blueprint와 Jinja Template Blueprint Flask의 기능이 늘어날수록, 코드의 양이 증가한다. 이때, Blueprint를 사용해 길어진 코드를 모듈화해주어 수정 개발과 유지보수에 용이하게 코드를 관리한다. 아래 코드는 Blueprint를 사용하지 않았을 때의 코드이다. #app.py rom flask import Flask, jsonify app = Flask(__name__) @app.route("/", methods=['GET']) def home_route(): return jsonfiy('home') @app.route("/first",methods=['GET']) def first_route(): return jsonify('first page') 기본 url인 "..

Backend/Flask 2022.02.07

flask 기초 I - 데이터 화면에 표현, GET, POST 등

1) Flask Framework Framework(프레임워크)는 결과물을 만들기 위해 제공하는 틀이다. 미리 작성돼있는 함수 이상의 기능을 제공한다. Flask Framework는 파이썬을 사용해서 웹 서버를 만들 수 있도록 도와준다. 기능이 많은 Django와 비교했을 때, Flask는 기본적인 기능만 제공하기 때문에 개발이 자유롭다. 2) Flask로 웹 서버 만들기 from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "hello" if __name__ == "__main__": app.run() (1) flask패키지에서 Flask를 import (2) @app.route() 는 서버에 접속가능한 url..

Backend/Flask 2022.02.04

MongoDB - 고급 활용 기능 이론 위주 (Flask, 집계, 인덱스, 복제 세트, Read-Concern/Write-Concern, 샤드 클러스터)

1) Flask Flask와 연결하기 import pymongo from bson import ObjectId import csv # 일반적으로 필요하진 않음 from flask import Flask, render_template, request, redirect app = Flask(__name__) client = pymongo.MongoClient('localhost', 27017) # 클라이언트 연결 db= client.get_database("MyDB") # 전역변수 설정 col = db.get_collection("post") # 전역변수 설정 Flask와 연결하기 위해서는 flask 모듈들을 임포트 해주어야한다. 연결 후, MongoDB와 html을 이용해 글 목록 조회, 작성, 생성, 읽..

Backend/MongoDB 2022.02.02