Skip to content

Instantly share code, notes, and snippets.

@javascripto
Created February 28, 2021 05:49
Show Gist options
  • Select an option

  • Save javascripto/ae5bacba0eb778ff3fb88c5420e4041e to your computer and use it in GitHub Desktop.

Select an option

Save javascripto/ae5bacba0eb778ff3fb88c5420e4041e to your computer and use it in GitHub Desktop.
const http = require('http')
const url = require('url')
function httpServer() {
const routes = {
GET: {},
POST: {},
PUT: {},
DELETE: {},
PATCH: {},
}
const server = http.createServer((request, response) => {
const parsedUrl = url.parse(request.url || '', true)
const { pathname } = parsedUrl
const query = {...parsedUrl.query}
console.log({
method: request.method,
pathname,
query,
headers: request.headers,
})
const route = routes[request.method][pathname]
if (!route) {
response.
return response.end('route not found')
}
return route(request, response)
})
return {
get(route, callback) {
routes.GET[route] = callback
},
post(route, callback) {
routes.POST[route] = callback
},
put(route, callback) {
routes.PUT[route] = callback
},
delete(route, callback) {
routes.DELETE[route] = callback
},
patch(route, callback) {
routes.PATCH[route] = callback
},
listen(port, callback) {
return server.listen(port, () => callback({ port }))
}
}
}
const app = httpServer()
app.get('/', (request, response) => {
return response.end('ok')
})
app.get('/users', (request, response) => {
return response.end('\n')
})
app.listen(8080, ({ port }) => {
console.log(`server listening on http://localhost:${port}`)
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment