我正在尝试在expressJS中构建一个rest API,但到目前为止,我在生成json响应方面遇到了很多麻烦。如果我将一条新记录发送到我的一个端点,它会被插入到数据库中,但服务器只是挂起并且没有响应。同样,如果我向我的某个资源发出get请求,则没有任何反应,服务器会再次挂起。
路由文件:
'use strict'
Calendar = require './models/calendar'
module.exports = (app, express) ->
router = express.Router()
# Log HTTP requests to console
router.use (req, res, next) ->
console.log req.method, req.url
next()
# Calendar routes
router.get '/calendars', (req, res) ->
Calendar.find (err, calendars) ->
if err then res.send(err)
res.json(calendars)
router.post '/calendars', (req, res) ->
calendar = new Calendar
calendar.name = req.body.name
calendar.save (err, calendar) ->
if err then next(err)
res.json(200, calendar)
# Namespace API
app.use('/api', router)
服务器文件:
'use strict';
express = require 'express'
path = require 'path'
fs = require 'fs'
# Set default node environment to development
process.env.NODE_ENV = process.env.NODE_ENV || 'development';
config = require './server/config/config'
app = express()
require('./server/config/express') app
require('./server/routes') app, express
# Start server
app.listen config.port, config.ip, ->
console.log 'Express server listening on %s:%d, in %s mode', config.ip, config.port, app.get 'env'
# Expose app
exports = module.exports = app;
配置文件:
path = require 'path'
express = require 'express'
favicon = require 'static-favicon'
cookieParser = require 'cookie-parser'
errorHandler = require 'errorhandler'
session = require 'express-session'
config = require './config'
mongoStore = require('connect-mongo') session
bodyParser = require 'body-parser'
module.exports = (app) ->
env = app.get 'env'
if env is 'development'
app
.use require('connect-livereload')()
.use errorHandler()
#disables caching of scripts in development module
#TODO: only for certain paths?
.use (req, res, next) ->
res.header 'Cache-Control', 'no-cache, no-store, must-revalidate'
res.header 'Pragma', 'no-cache'
res.header 'Expires', 0
next()
sessionStore = new mongoStore
url: config.mongo.uri
collection: 'sessions'
app
.use express.static path.join config.root, '.tmp'
.use express.static path.join config.root, 'client'
.use bodyParser.json()
.use bodyParser.urlencoded(extended: true)
.set 'views', "#{config.root}/client"
.set 'view engine', 'jade'
.use cookieParser()
.use session
secret: 'my-little-secret'
store: sessionStore