소수전공 2회차) express를 활용한 웹서버 열기

2017. 12. 18. 12:38프로그래밍(주력)/JAVASCRIPT

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
//미들웨어 받아오기
const express = require('express')
const bodyParser = require('body-parser')
const multer = require('multer')
 
const app = express()
 
//multer - diskStorage -> 하드에 저장함 (보통 이거 씀)
//multer - memoryStorage -> 램에 저장함 (용량 제한을 해서 사용하고, 서버에 저장할 필요가 없을때 씀)
 
//아래 코드는 실제로 저장이 되는 disk multer
const diskStorage = multer.diskStorage({
    //저장할곳
    destination : (req, file, cb) => {
        cb(null'public/uploads/')
    },
    //파일 이름(이거 안쓰면 파일이름이 해쉬값으로 들어가져버림..)
    filename : (req, file, cb) => {
        console.log(file.originalname)
        console.log(file)
        cb(null, file.originalname)
    },
})
 
//저장 안되는 memort multer 저장할필요가 없으니 객체 초기화해줄 필요도 없음
//이방식으로 이미지를 불러오면 ff ef이런 16진수 2자리로 버퍼가 남음 - 디스크에 저장을 하지 않으므로 전달용으로 남는거임
const memoryStorage = multer.memoryStorage()
 
//업로드 설정
const upload = multer({storage : memoryStorage})
 
//미들웨어 설정
//미들웨어는 express안의 부가적 import들을 말한다고 보면 된다.
 
//"/"로 들어오면 public 폴더를 엑세스 하게 해줌
//use는 미들웨어 쓸때
app.use('/', express.static(__dirname + '/public'))
/*
app.use(bodyParser.urlencoded({
    //urlencoded가 쓰이는 이유
    //파싱을 해서 객체로 자동으로 만들어줌. 안쓰면 문자열로 통쨰로 가져옴
    extended : true,
}))
*/
 
//get방식
/*
///api/posts에 들어가면 특정 문자열 return
app.get('/api/posts', (req, res) => {
    res.send('HELLO @').end()
})
///api/posts/숫자 에 들어가면 특정 문자열 return
app.get('/api/posts/:post_id', (req, res) => {
    let postID = req.params.post_id
    res.send('YOU REQUEST TO ' + postID).end()
})
*/
 
//post방식
//input태그의 name이 req.body의 키값이 됨
/*
app.post('/api/posts', (req, res) => {
    res.send(req.body).end()
})
*/
 
app.post('/api/posts', upload.any(), (req, res) => {
    console.log(req.body, req.files)
    res.send(req.body).end()
})
 
//나머지 주소로 들어오면 다 404를 띄워버림
app.get('*', (req, res) => {
    res.status(404).end()
})
 
app.listen(8081)
console.log("localhost:8081에서 실행중")
cs


또한 모듈화를 통한 파일 세분화(?)를 하였다(첨부파일 참고)

1215.zip