[ノード.js]サーバドライバ


ノードはJavaScript実行時です.
ノードを使用してサーバをJavaScriptに移行できますが、ノード自体はサーバではありません.
サーバをJavaScriptに移行
const http = require('http');  // 노드가 http라는 모듈을 제공

http.createServer((req, res) => {
  
});

http.listen(3065);
前述したようにjavascriptを使用してhttpで符号化し、ノードで上記のコードを実行できます.
ノード実行時に上記のコードを実行することで、httpはサーバの役割を果たします.

サーバ構成

npm init
デフォルトのパッケージとしてbackフォルダを作成します.jsonファイルを作成します.
あとはappjsファイルを作成し、
// app.js

const http = require('http');

const server = http.createServer((req, res) => {
	console.log(req.url, req.method);
  	res.end('Hello node');
});

server.listen(3065, () => {
	console.log('서버 실행 중');
});
上記のコードを作成すると、「node app.js"で実行できます.
localhost:3065に接続すると、Hello ndeeが表示されます.
ブラウザまたはフロントエンド・サーバのリクエストについては、「
「req」で表示およびクエリーできます.
応答の情報は「res」に含まれるため、応答を送信する際に「res」で送信することができる.
複数行を作成する場合は、次の操作を行います.
const http = require('http');

const server = http.createServer((req, res) => {
	console.log(req.url, req.method);
  
  	res.write('Hello node1');
  	res.write('<p>Hello node2</p>');
  	res.write('Hello ndoe3');
  	res.write('Hello node4');
  	res.end('Hello node');
});

server.listen(3065, () => {
	console.log('서버 실행 중');
});
このようにwriteで送信できます.(htmlタグを送信することもできます.)
リクエストはフロントサーバから.urlによって区別すべきで、
const server = http.createServer((req, res) => {
	console.log(req.url, req.method);

	if(req.method === 'GET') {
		if(req.url === '/api/posts') {
				
		}
	}
	if(req.method === 'POST') {
		if(req.url === '/api/post') {
				
		}
	}
	if(req.method === 'DELETE') {
		if(req.url === '/api/post') {
				
		}
	}

	res.end('Hello node');
});
このようにif文で行うと、コードが長すぎて乱れてしまいます.
基本ノードが提供する基本httpはコードを分割するのが難しいため、構造的に
「express」というフレームワークを使用して、明確なコードを書くことをお勧めします.

express

npm i express
express内部でもhttpが使用されるため、サーバを迂回することができます.
const express = require('express');

const app = express();

app.listen(3065, () => {
  console.log('서버 실행 중');
});
expressは内部でhttpを使用するため、http部分を宣言に置き換えます.
appを呼び出し、appを介してサーバを使用します.
上の「http.「createServer」セクションは、構造的に変更できます.
const express = require('express');

const app = express();

app.get('/', (req, res) => {
	res.send('hello express');
});

app.listen(3065, () => {
	console.log('서버 실행 중');
});
getメソッド,「/」はurlとして機能する.
expressでは、上記のres.endセクションをres.send()として使用します.
「アドレス」ウィンドウから他のurlに接続する場合は、「get」でこの操作を実行できます.
const express = require('express');

const app = express();

app.get('/', (req, res) => {
	res.send('hello express');
});

app.get('/api', (req, res) => {  // localhost:3065/api
	res.send('hello api');
});

app.listen(3065, () => {
	console.log('서버 실행 중');
});
urlはバックエンド開発者とフロントエンド開発者が協議して命名します.
二人で話し合いができたら勝手に建ててもかまわないが、一般的には意味を知らないために
勝手に起きるのではなく『REST API』で多く起きる
主に使われているのは
app.get -> 가져오다
app.post -> 생성하다
app.put -> 전체 수정
app.delete -> 제거
app.patch -> 부분 수정
app.options -> 찔러보기 (?)
app.head -> 헤더만 가져오기 (헤더 / 본문(바디)))
.

ルータの切断


backフォルダにroutesというフォルダを作成し、
ファイルに分けます.
// post.js

const express = require('express');

const router = express.Router();

router.post('/post', (req, res) => {
	res.json({ id: 1, content: 'hello' });
});

router.delete('/post', (req, res) => {
	res.json({ id: 1 });
});

module.exports = router;
ここではappの代わりに「express」を使いますRouter()を呼び出す変数「router」を使用します.
分離ルータ
// app.js
import postRouter = require('./routes/post');
.
.
.

app.use('/post', postRouter);

app.listen(3065, () => {
	console.log('서버 실행 중');
});
このようにpostの位置に入れればいいです
そして接頭辞(「./post」)をimportに入れるところがpostです.jsファイルでは、/postを省略できます.
const express = require('express');

const router = express.Router();

router.post('/', (req, res) => {
	res.json({ id: 1, content: 'hello' });
});

router.delete('/', (req, res) => {
	res.json({ id: 1 });
});

module.exports = router;