Nodejsベース駐車
Express
Webサーバを作成するには、URL管理、ファイル管理、ログインなど、Webサーバを作成するために必要な機能が必要です.これらの機能は、フレームワークと呼ばれています.
ここでexpressは、nodeがWebサーバを作成するために使用する最も一般的なフレームワークです.
package.json 생성코드
npm init -y
express 설치 코드
npm install express
Express - Routing
ルーティングを使用すると、urlごとに異なる成果物を表示できます.
Express - Router
同じページ間で同じルートを使用してグループ化
routes/user.jsファイル
var express = require('express');
var router = express.Router();
router.get('/login', function(req, res, next) {
res.send('로그인 페이지')
});
router.get('/register', function(req, res, next) {
res.send('회원가입 페이지')
});
module.exports = router;
index.jsファイルの変更const userRouter = require('./routes/user');
app.use('/user',userRouter);
Express - Middleware
以前学習したWebフレームワークの特徴.繰り返しが必要な動作を簡単に処理しておくことができます
ミドルウェア使用例
const express = require('express');
const app = express();
app.use((req, res, next) => {
console.log(req);
next();
});
app.get('/', (req, res, next) => {
res.send('Welcome Home');
});
app.listen(3000);
真ん中のappガードを使うローコードを使用すると、どんなリクエストがあってもreqを記録し、実際のルーティングに転送します.
미들웨어 추가 코드
app.use(express.urlencoded({extended: false}))
app.use(express.json())
静的ミドルウェアを内蔵
index.jsファイルにコードを1行追加
app.use(express.static('public'));
共通フォルダを作成して画像を入れることができます.次に/ファイル名のパスを入力し、Webブラウザで画像を表示できます.
テンプレートエンジン
テンプレートエンジンを使用すると、ユーザーはフォーマットが一致するHTMLファイルに必要なデータを動的に挿入し、必要なフォーマットのホームページを整理できます.
テンプレートエンジンの利点
テンプレートエンジンの1つであるEJS
설치코드
npm install ejs
package.json 파일을 열었을 때 dependencies 부분에 ejs 가 들어가 있으면 정상적으로 설치가 된 것
使用例app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
app.get('/test', (req, res) => {
let name = req.query.name;
res.render('test', {name});
})
viewフォルダを作成してテストします.ejsファイルを追加してテストします.ejsファイルの内容がWebページに表示されますres.renderはtestです.ejsファイルを描画し、そのejsファイルにname値をオブジェクトとして渡すことを示します.
EJS構文
app.get('/test', (req, res) => {
let name = req.query.name;
res.render('test', {name});
})
test.ejsファイルを描画し、ejsファイルのnameという値をオブジェクトに渡します.<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
Hi. My name is <%= name %><br>
</body>
</html>
ejs構文を使用して新しく生成されたページにアクセスlocalhost:3000/testファイル?オブジェクトに渡される値=表示する値
localhost:3000/test?name=willy
-->> Hi. My name is willy
このようにejs構文を使用します.
3週目からデータベースを作成し、データベースデータを取得するためのapiを作成します.
REST欄
これは,Web上に存在するすべてのリソース(画像,ビデオ,DBリソース)に固有のURIを付与することによって用いられることで,リソースを定義し,リソースにアドレスを指定する方法論を意味する.
これらのWeb上に存在するリソースにアクセスする方法などを定義してRESTと呼ぶ.
REST API:RESTルールに従う3種類のAPI構成
リソース-URL
私たちが作成するソフトウェアが管理するすべては、リソースで表すことができます.ショッピングモールの場合は、商品情報やカート内の商品を管理します.
動作-HSTPメソッド
作成さくせい:作成(POST)さくせい(POST)
Read:クエリー(GET)
更新:変更(PUT)
Delete:削除(DELETE)
表現
JSON、XMLなどの形式で資源を表す
mongoose
mongodbに接続し、データモデリングのツールを提供します.ノードで直接使用できます.
造形は商品の構造、商品のイメージ、商品名、価格、カテゴリなどです!
Schemaはフォルダにファイルを追加する構成です.
mongoose 설치코드
npm install mongoose
例(アーキテクチャフォルダ/index.jsファイルのコードの作成)を使用してmongose構造を作成するconst mongoose = require("mongoose");
const connect = () => {
mongoose
.connect("mongodb://localhost:27017/voyage", {
useNewUrlParser: true,
useUnifiedTopology: true,
useCreateIndex: true,
ignoreUndefined: true
})
.catch(err => console.log(err));
};
mongoose.connection.on("error", err => {
console.error("몽고디비 연결 에러", err);
});
module.exports = connect;
次に、データをモデリングします.mongoseでSchemaオブジェクトを使用します.
使用例(アーキテクチャフォルダ/goods.jsファイルのコードを作成)
const mongoose = require("mongoose");
const { Schema } = mongoose;
const goodsSchema = new Schema({
goodsId: {
type: Number,
required: true,
unique: true
},
name: {
type: String,
required: true,
unique: true
},
thumbnailUrl: {
type: String
},
category: {
type: String
},
price: {
type: Number
}
});
module.exports = mongoose.model("Goods", goodsSchema);
使用例(最上位レベルのindex.jsファイルを変更)const connect = require("./schemas");
connect();
上にはSchemaオブジェクトのみが追加され、goodsID、name、thumbnail Url、category、priceデータをモデリングし、商品を含む新しい変数Goodsを宣言し、create関数を呼び出してmongodyにデータを追加します.これでrobo 3 Tに接続して入力したデータを確認できます.
しかしこれはまだmongodyのデータがインポートされておらず、一時的に表示されているだけです!!
では、実際にMongoDBデータを取得する方法で変更しましょう.
mongodbに格納されているデータをインポートするためのapiを追加
使用例(index.jsファイルに追加)
const goodsRouter = require("./routers/goods");
app.use("/api", [goodsRouter]);
(ルータ/goods.jsファイルに追加)const express = require("express");
const Goods = require("../schemas/Goods");
const router = express.Router();
router.get("/goods", async (req, res, next) => {
try {
const { category } = req.query;
const goods = await Goods.find({ category }).sort("-goodsId");
res.json({ goods: goods });
} catch (err) {
console.error(err);
next(err);
}
});
router.get("/goods/:goodsId", async (req, res) => {
const { goodsId } = req.params;
goods = await Goods.findOne({ goodsId: goodsId });
res.json({ detail: goods });
});
module.exports = router;
呼び出し/api/goodsリストが正しいかどうかをチェック!現在apiサーバを介してmongodbの商品情報の導入に成功している.
ここでは、/インデックスを表示します.ejsファイルを変更すると、ショッピングモールにカタログを表示できます.
Insomniaへの商品追加
POSTメソッドの特徴はGETメソッドとは異なり,bodyと呼ばれる付加情報を含み,サーバに伝達できる.
使用例(ルータ/goods.js)
router.post('/goods', async (req, res) => {
const { goodsId, name, thumbnailUrl, category, price } = req.body;
isExist = await Goods.find({ goodsId });
if (isExist.length == 0) {
await Goods.create({ goodsId, name, thumbnailUrl, category, price });
}
res.send({ result: "success" });
});
PATCHとPUT方法の違い
PUTは、リソース内のすべてのフィールドの情報を変更するために使用され、PATCHは、リソース内のいくつかのカラムのみを変更するために使用される
Reference
この問題について(Nodejsベース駐車), 我々は、より多くの情報をここで見つけました https://velog.io/@wooya/노드テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol