Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 머클루트
- Docker
- 리눅스
- MariaDB
- 우분투
- 환경변수
- 전역설치
- 설치
- 블록체인
- 머클트리
- 리액트를 다루는 기술
- wsl
- 쉘스크립트
- node.js 교과서 따라하기
- 자바스크립트
- 일반유저
- 깃허브
- 라우터
- 시퀄라이즈
- 벨로포터
- npm
- Sequelize
- centos
- 솔리디티
- 리액트
- 변수
- immer
- 노드
- 이더리움
- wget
Archives
- Today
- Total
코드코코
[블록체인] 블록체인만들기 (3) HTTP 서버 (httpServer.js) 본문
사전작업
httpServer.js 파일 생성
touch httpServer.js
모듈설치
express, bodyparser
npm i express body-parser
모듈불러오기
chainedBlock.js, checkValidBlock.js
const express = require("express")
const bodyParser = require("body-parser")
const { getBlocks, getVersion, nextBlock } = require('./chainedBlock')
const { addBlock } = require('./checkVaildBlock')
chainedBlock.js 에서 추가 exports 해주기
getBlocks와 getVersion을 httpServer.js 에서 사용할 예정이므로 미리 exports 시킴
module.exports = { nextBlock, getLastBlock, createHash, Blocks, getBlocks, getVersion }
express 서버 만들기
env 사용하여 포트열기
환경변수 설정 및 조회
export 변수명="값"
env | grep 조회할 변수명
HTTP서버 연결 및 확인
원하는 형태로 데이터를 파싱하기위해 bodyParser 추가
const app = express()
const http_port = process.env.HTTP_PORT || 3001
function initHttpServer() {
app.use(bodyParser.json())
app.listen(http_port, () => {
console.log("Listening Http Port : " + http_port)
})
}
initHttpServer();
URI
구성
/blocks : 전체 블럭을 가져옴
/mineBlock : 블럭체인에 블럭을 추가
/version : 버전정보를 가져옴
/stop : 서버를 종료
function initHttpServer() {
app.use(bodyParser.json())
app.get("/blocks", (req, res) => {
res.send(getBlocks())
})
app.post("/mineBlock", (req, res) => {
const data = req.body.data || []
console.log(data)
const block = nextBlock(data)
addBlock(block)
res.send(block)
})
app.get("/version", (req, res) => {
res.send(getVersion())
})
app.post("/stop", (req, res) => {
res.send({ "msg": "Stop Server!" })
process.exit()
})
app.listen(http_port, () => {
console.log("Listening Http Port : " + http_port)
})
}
initHttpServer();
브라우저 접속
/blocks , /version
GET 메소드는 브라우저에 잘 출력이 되지만,
/mineBlock , /stop
POST 메소드는 브라우저에 출력이 되지 않는다.
curl 명령어를 통해 터미널에서 확인하는 방법을 사용하고자 한다.
curl 명령어로 POST 메소드 이용하기
/mineBlock
curl -H "Content-Type: application/json" --data "{\"data\" : [\"Anything1\",\"Anything2\"]}" http://localhost:3001/mineBlock
curl -H "Content-Type: application/json" --data "{\"data\":[\"Anything3\",\"Anything4\"]}"
http://localhost:3001/mineBlock | python3 -m json.tool
파이선이 설치되어 있다면 다음과 같은 형태로 확인해 볼 수 있다.
서버연결한 터미널에 로그가 쌓임
마찬가지로 /blocks 에서 추가된 블럭들이 확인 됨
/stop
curl -X POST http://localhost:3001/stop
목차
httpServer.js
1 사전작업
1.1 httpServer.js 파일 생성
- touch httpServer.js
1.2 모듈설치
1.2.1 Express, Bodyparser
1.3 모듈불러오기
1.3.1 chainedBlock, checkValidBlock
2 express server 만들기
2.1 env 사용하여 포트열기
2.1.1 환경변수 설정 및 조회
- export 변수명="값"
- env | grep 조회할 변수명
2.2 http서버연결 및 확인
- 원하는 형태로 데이터를 파싱하기위해 bodyParser 를 추가
2.3 chainedBlock.js 에서 추가 exports 해주기
- getBlocks와 getVersion을 httpServer.js 에서 사용할 예정이므로 미리 exports 시킴
3 URl
3.1 구성
- /blocks : 전체 블록을 가져옴
- /mineBlock : 블록체인에 블록을 추가
- /version : 버전 정보를 가져옴
- /stop : 서버를 종료
3.2 브라우저 접속
3.2.1 /blocks , /version
- GET 메소드는 브라우저에 잘 출력이 되지만,
3.2.2 /mineBlock , /stop
- POST 메소드는 브라우저에 출력이 되지 않는다.
3.3 Curl 명령어로 POST 메소드 이용하기
3.3.1 /blocks
3.3.2 /stop
전체코드
const express = require("express")
const bodyParser = require("body-parser")
const { getBlocks, getVersion, nextBlock } = require('./chainedBlock')
const { addBlock } = require('./checkValidBlock')
const app = express()
const http_port = process.env.HTTP_PORT || 3001
function initHttpServer() {
app.use(bodyParser.json())
app.get("/blocks", (req, res) => {
res.send(getBlocks())
})
app.post("/mineBlock", (req, res) => {
const data = req.body.data || []
console.log(data)
const block = nextBlock(data)
addBlock(block)
res.send(block)
})
app.get("/version", (req, res) => {
res.send(getVersion())
})
app.post("/stop", (req, res) => {
res.send({ "msg": "Stop Server!" })
process.exit()
})
app.listen(http_port, () => {
console.log("Listening Http Port : " + http_port)
})
}
initHttpServer();
'블록체인' 카테고리의 다른 글
[블록체인] 블록체인만들기 (4) P2P 서버 (p2pServer.js) (0) | 2021.12.31 |
---|---|
[블록체인] 블록체인만들기 (2) 블록생성과 블록검증(checkValidBlock.js) (0) | 2021.12.30 |
[블록체인] 블록체인만들기 (1) 블록생성(chainedBlock.js) (0) | 2021.12.30 |
[블록체인] Websocket - 사전개념 (0) | 2021.12.29 |
[블록체인] 자바스크립트로 블록체인 만들기 (1) - 블록생성 (0) | 2021.12.27 |