Skip to content

Commit 958c4af

Browse files
committed
update express apps
1 parent d7efde3 commit 958c4af

5 files changed

+107
-108
lines changed

functions/app/index.js

Lines changed: 27 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,41 @@ import bodyParser from 'body-parser'
66
import compression from 'compression'
77
import customLogger from '../utils/logger'
88

9+
/* My express App */
910
export default function expressApp(functionName) {
10-
/* My express App */
11+
1112
const app = express()
1213
const router = express.Router()
14+
15+
// gzip responses
1316
router.use(compression())
1417

1518
// Set router base path for local dev
1619
const routerBasePath = (process.env.NODE_ENV === 'dev') ? `/${functionName}` : `/.netlify/functions/${functionName}/`
1720

1821
/* define routes */
22+
router.get('/', (req, res) => {
23+
console.log('home route hit')
24+
const html = `
25+
<html>
26+
<head>
27+
</head>
28+
<body>
29+
<h1>
30+
⊂◉‿◉つ I'm using Express in a lambda via '${functionName}'
31+
</h1>
32+
33+
<a href='/.netlify/functions/${functionName}/users'>View users</a>
34+
<br/>
35+
36+
<a href='/'>Back home</a>
37+
38+
</body>
39+
</html>
40+
`
41+
res.send(html)
42+
})
43+
1944
router.get('/users', (req, res) => {
2045
res.json({
2146
users: [{
@@ -26,25 +51,6 @@ export default function expressApp(functionName) {
2651
})
2752
})
2853

29-
router.get('/', (req, res) => {
30-
console.log('home route hit')
31-
const html = `
32-
<html>
33-
<head>
34-
</head>
35-
<body>
36-
<h1>
37-
⊂◉‿◉つ I'm using Express in a lambda via '${functionName}'
38-
</h1>
39-
40-
<a href='/.netlify/functions/${functionName}/users'>View users</a>
41-
</body>
42-
</html>
43-
`
44-
45-
res.send(html)
46-
})
47-
4854
router.get('/hello/', function(req, res){
4955
res.send('hello world')
5056
})
@@ -55,6 +61,7 @@ export default function expressApp(functionName) {
5561
// Setup routes
5662
app.use(routerBasePath, router)
5763

64+
// Apply express middlewares
5865
router.use(cors())
5966
router.use(bodyParser.json())
6067
router.use(bodyParser.urlencoded({ extended: true }))

functions/aws-serverless-express.js

Lines changed: 9 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -1,80 +1,18 @@
1+
/* example using https://github.com/awslabs/aws-serverless-express */
12
import express from 'express'
23
import awsServerlessExpress from 'aws-serverless-express'
3-
import cors from 'cors'
4-
import morgan from 'morgan'
5-
import bodyParser from 'body-parser'
6-
import compression from 'compression'
7-
import awsServerlessExpressMiddleware from 'aws-serverless-express/middleware'
8-
import customLogger from './utils/logger'
4+
import binaryMimeTypes from './utils/binaryMimeTypes'
5+
import expressApp from './app'
96

10-
const app = express()
11-
const router = express.Router()
12-
13-
router.use(compression())
14-
15-
app.use(morgan(customLogger))
16-
17-
router.get('/users', (req, res) => {
18-
res.json({
19-
users: [{
20-
name: 'steve'
21-
}, {
22-
name: 'joe',
23-
}]
24-
})
25-
})
26-
27-
router.get('/', (req, res) => {
28-
const html = `
29-
<html>
30-
<head>
31-
</head>
32-
<body>
33-
<h1>
34-
⊂◉‿◉つ I'm using Express in a lambda via 'aws-serverless-express'
35-
</h1>
36-
37-
<a href='/.netlify/functions/aws-serverless-express/users'>View users route</a>
38-
</body>
39-
</html>
40-
`
41-
42-
res.send(html)
43-
})
44-
45-
router.get('/hello/', function(req, res){
46-
res.send('hello world')
47-
})
48-
49-
app.use('/.netlify/functions/aws-serverless-express/', router)
50-
51-
router.use(cors())
52-
router.use(bodyParser.json())
53-
router.use(bodyParser.urlencoded({ extended: true }))
54-
router.use(awsServerlessExpressMiddleware.eventContext())
55-
56-
const binaryMimeTypes = [
57-
'application/javascript',
58-
'application/json',
59-
'application/octet-stream',
60-
'application/xml',
61-
'font/eot',
62-
'font/opentype',
63-
'font/otf',
64-
'image/jpeg',
65-
'image/png',
66-
'image/svg+xml',
67-
'text/comma-separated-values',
68-
'text/css',
69-
'text/html',
70-
'text/javascript',
71-
'text/plain',
72-
'text/text',
73-
'text/xml'
74-
]
7+
// We need to define our function name for express routes to set the correct base path
8+
const functionName = 'aws-serverless-express'
9+
// Initialize express app
10+
const app = expressApp(functionName)
7511

12+
// Initialize awsServerlessExpress
7613
const server = awsServerlessExpress.createServer(app, null, binaryMimeTypes)
7714

15+
// Export Lambda handler
7816
exports.handler = (event, context) => {
7917
return awsServerlessExpress.proxy(server, event, context)
8018
}

functions/aws-serverless.js

Lines changed: 0 additions & 15 deletions
This file was deleted.

functions/serverless-http.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
1+
/* example using https://github.com/dougmoscrop/serverless-http */
12
import serverless from 'serverless-http'
23
import expressApp from './app'
34

4-
// We need to define our function name for
5+
// We need to define our function name for express routes to set the correct base path
56
const functionName = 'serverless-http'
6-
console.log('__filename', __filename)
7+
8+
// Initialize express app
79
const app = expressApp(functionName)
810

11+
// Export lambda handler
912
exports.handler = serverless(app)
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
import express from 'express'
2+
import awsServerlessExpress from 'aws-serverless-express'
3+
import cors from 'cors'
4+
import morgan from 'morgan'
5+
import bodyParser from 'body-parser'
6+
import compression from 'compression'
7+
import awsServerlessExpressMiddleware from 'aws-serverless-express/middleware'
8+
import customLogger from './utils/logger'
9+
import binaryMimeTypes from './utils/binaryMimeTypes'
10+
11+
const app = express()
12+
const router = express.Router()
13+
14+
/* We need to set our base path for express to match on our function route */
15+
const functionName = 'standalone-aws-serverless-express-example'
16+
const basePath = `/.netlify/functions/${functionName}/`
17+
18+
router.use(compression())
19+
20+
app.use(morgan(customLogger))
21+
22+
router.get('/users', (req, res) => {
23+
res.json({
24+
users: [{
25+
name: 'steve'
26+
}, {
27+
name: 'joe',
28+
}]
29+
})
30+
})
31+
32+
router.get('/', (req, res) => {
33+
const html = `
34+
<html>
35+
<head>
36+
</head>
37+
<body>
38+
<h1>
39+
⊂◉‿◉つ I'm using Express in a lambda via '${functionName}'
40+
</h1>
41+
42+
<a href='/.netlify/functions/${functionName}/users'>
43+
View users route
44+
</a>
45+
</body>
46+
</html>
47+
`
48+
// send back HTML
49+
res.send(html)
50+
})
51+
52+
app.use(basePath, router)
53+
54+
// Apply express middlewares
55+
router.use(cors())
56+
router.use(bodyParser.json())
57+
router.use(bodyParser.urlencoded({ extended: true }))
58+
router.use(awsServerlessExpressMiddleware.eventContext())
59+
60+
// Initialize awsServerlessExpress
61+
const server = awsServerlessExpress.createServer(app, null, binaryMimeTypes)
62+
63+
// Export lambda handler
64+
exports.handler = (event, context) => {
65+
return awsServerlessExpress.proxy(server, event, context)
66+
}

0 commit comments

Comments
 (0)