/?parameter="test"

기존 request.param("parameter") 에서... 아래와 같이 업데이트됨;

 

var app = express();

app.post 일때, request.body.parameter

app.get 일때, request.params.parameter

 

어떤 방식으로 값이 들어오는지 보려면

console.log(request.params);

console.log(request.body);

console.log(request.query); 를 찍어보자..

 

또한

app.use(bodyParser.urlencoded({
    extended: true
}));

 

bodyParser 가 urlencoded 로 되어 있어야된다. JSON으로 되있을 경우 JSON 형식만 읽어오기떄문에 undefined가 줄기차게 뜰것임..ㅋㅋ

 


   『모던 웹을 위한 Node.js 프로그래밍』보면서 차근히 따라하고 있는데..  express에서 미들웨어 사용하다가 난관에 부딪혔다.


   logger 쓰려고 했더니, 에러가 빡!! 미들웨어가 더이상 번들로 설치되어 있는 게 아니니 따로 설치하란다. 이게 뭔...?


   또다시 구글링... 구글링구글구긆릉르르르ㅏ르르르르 


   http://stackoverflow.com/questions/23526356/heroku-node-js-server-crash-with-error-most-middleware-like-logger-is-no-lo


    ↑ 이 사람 글을 보니, 2가지 방법이 있댄다. logger 대신에 morgan을 설치해서 사용하든가, express가 설치된 폴더 안에서 package.json 파일을 찾아서 express 버전을 3.x대로 변경해주면 된다나.


   좀더 찾아보니 morgan이 4.x 버전에서는 logger을 대신해서 같은 역할을 하는 미들웨어란다.


   고로.. 4.x 버전에서는 이제 아래와 같이 써줘야 에러없이 잘 돌아간다. (npm install morgan으로 우선 morgan 설치해줘야 함)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// 모듈 추출
var express = require("express");
var morgan = require("morgan");
 
// 서버 생성
var app = express();
 
// 미들웨어 설정
// app.use(express.logger()); // 3.X 버전에서만 실행되고 4.X 버전에서는 에러 발생.
 
//app.use(morgan()); // 고로, 4.X 버전에서는 morgan을 사용해야 함. logger와 같은 역할.
app.use(morgan('dev'));
 
app.use(function (request, response, next) {
    response.send("<h1>come on express~~</h1>");
});
 
// 서버 실행
http.createServer(app).listen(1799, function () {
    console.log("Server Running at http://127.0.0.1:1799");
});



   http://blog.naver.com/PostView.nhn?blogId=rintiantta&logNo=40207854837


   ↑ 그리고 우연찮게 검색 중에 책의 저자가 운영하는 블로그를 발견했는데.. 헐... 뭐 바뀐 게 이리 많아?


   https://github.com/strongloop/express/wiki/Migrating-from-3.x-to-4.x


   ↑ 일단 이제 막 express 시작하는 참이라 아직 뭐가 뭔지 잘 모르겠지만,, 버전 업에 따른 변경 사항에 이것도 좀 참고해야겠다.

Installation
$ npm install cookie-parser

API

var express      = require('express')
var cookieParser = require('cookie-parser')

var app = express()
app.use(cookieParser())

cookieParser(secret, options)

  • secret a string used for signing cookies. This is optional and if not specified, will not parse signed cookies.
  • options an object that is passed to cookie.parse as the second option. See cookie for more information.
    • decode a function to decode the value of the cookie

cookieParser.JSONCookie(str)

Parse a cookie value as a JSON cookie. This will return the parsed JSON value if it was a JSON cookie, otherwise it will return the passed value.

cookieParser.JSONCookies(cookies)

Given an object, this will iterate over the keys and call JSONCookie on each value. This will return the same object passed in.

cookieParser.signedCookie(str, secret)

Parse a cookie value as a signed cookie. This will return the parsed unsigned value if it was a signed cookie and the signature was valid, otherwise it will return the passed value.

cookieParser.signedCookies(cookies, secret)

Given an object, this will iterate over the keys and check if any value is a signed cookie. If it is a signed cookie and the signature is valid, the key will be deleted from the object and added to the new object that is returned.

Example

var express      = require('express')
var cookieParser = require('cookie-parser')

var app = express()
app.use(cookieParser())

app.get('/', function(req, res) {
  console.log("Cookies: ", req.cookies)
})

app.listen(8080)

// curl command that sends an HTTP request with two cookies
// curl http://127.0.0.1:8080 --cookie "Cho=Kim;Greet=Hello"

 

 

 

http://stackoverflow.com/questions/4482686/check-synchronously-if-file-directory-exists-in-node-js

Server.js
/*Define dependencies.*/

var express=require("express");
var multer  = require('multer');
var app=express();
var done=false;

/*Configure the multer.*/

app.use(multer({ dest: './uploads/',
 rename: function (fieldname, filename) {
    return filename+Date.now();
  },
onFileUploadStart: function (file) {
  console.log(file.originalname + ' is starting ...')
},
onFileUploadComplete: function (file) {
  console.log(file.fieldname + ' uploaded to  ' + file.path)
  done=true;
}
}));

/*Handling routes.*/

app.get('/',function(req,res){
      res.sendfile("index.html");
});

app.post('/api/photo',function(req,res){
  if(done==true){
    console.log(req.files);
    res.end("File uploaded.");
  }
});

/*Run the server.*/
app.listen(3000,function(){
    console.log("Working on port 3000");
});
index.html
<form id        =  "uploadForm"
     enctype   =  "multipart/form-data"
     action    =  "/api/photo"
     method    =  "post"
>
<input type="file" name="userPhoto" />
<input type="submit" value="Upload Image" name="submit">
</form>

 

 

https://codeforgeek.com/2014/11/file-uploads-using-node-js/

 

 

http://stackoverflow.com/questions/24330014/bodyparser-is-deprecated-express-4

 

express/connect top-level generic

This example demonstrates adding a generic JSON and URL-encoded parser as a top-level middleware, which will parse the bodies of all incoming requests. This is the simplest setup.

var express = require('express')
var bodyParser = require('body-parser')

var app = express()

// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))

// parse application/json
app.use(bodyParser.json())

app.use(function (req, res) {
  res.setHeader('Content-Type', 'text/plain')
  res.write('you posted:\n')
  res.end(JSON.stringify(req.body, null, 2))
})

express route-specific

This example demonstrates adding body parsers specifically to the routes that need them. In general, this is the most recommend way to use body-parser with express.

var express = require('express')
var bodyParser = require('body-parser')

var app = express()

// create application/json parser
var jsonParser = bodyParser.json()

// create application/x-www-form-urlencoded parser
var urlencodedParser = bodyParser.urlencoded({ extended: false })

// POST /login gets urlencoded bodies
app.post('/login', urlencodedParser, function (req, res) {
  if (!req.body) return res.sendStatus(400)
  res.send('welcome, ' + req.body.username)
})

// POST /api/users gets JSON bodies
app.post('/api/users', jsonParser, function (req, res) {
  if (!req.body) return res.sendStatus(400)
  // create user in req.body
})

change content-type for parsers

All the parsers accept a type option which allows you to change the Content-Type that the middleware will parse.

// parse various different custom JSON types as JSON
app.use(bodyParser.json({ type: 'application/*+json' }))

// parse some custom thing into a Buffer
app.use(bodyParser.raw({ type: 'application/vnd.custom-type' }))

// parse an HTML body into a string
app.use(bodyParser.text({ type: 'text/html' }))

 

 

위 오류가 날때...

 

 

 

app.router 를 use 하는 라인을 지워주면 된다.

예전에는 넣어줘야되는데 최신버젼에선 없어졌다고 한다.

+ Recent posts