# @devnetic/server

> A modern, powerful and blasing fast server for Node.js

Latest version **1.1.4** (published 2020-11-04) · MIT license · 0 weekly downloads

## Install

```sh
npm install @devnetic/server
pnpm add @devnetic/server
yarn add @devnetic/server
bun add @devnetic/server
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.1.4 |
| Published | 2020-11-04 |
| First published | 2019-09-29 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 3 |
| Unpacked size | 10.4 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Author | Alvaro Jose Agamez Licha |
| Maintainers | aagamezl |
| Keywords | server, http, api |

## Links

- npm: https://www.npmjs.com/package/@devnetic/server
- Repository: https://github.com/devnetic/server
- Homepage: https://github.com/devnetic/server#readme
- Issues: https://github.com/devnetic/server/issues
- npm.io page: https://npm.io/package/@devnetic/server

## Dependencies (3)

- [esm](https://npm.io/package/esm.md) ^3.2.25
- [@devnetic/cli](https://npm.io/package/@devnetic/cli.md) ^1.2.1
- [@devnetic/router](https://npm.io/package/@devnetic/router.md) ^2.0.0

## Alternatives

- [launchdarkly-js-client-sdk](https://npm.io/package/launchdarkly-js-client-sdk.md) — 2.5M weekly downloads
- [@elastic/elasticsearch](https://npm.io/package/@elastic/elasticsearch.md) — 2.1M weekly downloads
- [@c8y/client](https://npm.io/package/@c8y/client.md) — 15.3K weekly downloads
- [@signaldb/maverickjs](https://npm.io/package/@signaldb/maverickjs.md) — 1.7K weekly downloads
- [@bbc/http-transport-cache](https://npm.io/package/@bbc/http-transport-cache.md) — 1.2K weekly downloads

## Recent versions

- 1.1.4 (latest) — 2020-11-04
- 1.1.3 — 2020-11-04
- 1.1.2 — 2020-11-04
- 1.1.1 — 2020-11-04
- 1.1.0 — 2020-01-26
- 1.0.3 — 2020-01-14
- 1.0.2 — 2020-01-14
- 1.0.1 — 2019-10-19
- 1.0.0 — 2019-09-29

## README

# @devnetic/server

![npm (scoped)](https://img.shields.io/npm/v/@devnetic/server)
![npm bundle size (scoped)](https://img.shields.io/bundlephobia/minzip/@devnetic/server?color=red)
![npm](https://img.shields.io/npm/dt/@devnetic/server)
![GitHub issues](https://img.shields.io/github/issues-raw/devnetic/server)
![GitHub](https://img.shields.io/github/license/devnetic/server)

A simple, modern, and blasing fast server for Node.js, with a router module to make your life easier.

# Usage

## Basic Server
```javascript
const server = require('@devnetic/server')
// import * as server from '@devnetic/server'

const app = server.createServer()

app.router.get('/ready', (request, response) => {
  response.json({ server: 'ok' })
})

app.listen()
```

## Setting Port, Hostname and Listening Callback

Port param is mandatory, hostname and listening callback are optional.

```javascript
const server = require('@devnetic/server')
// import * as server from '@devnetic/server'

const app = server.createServer()

app.router.get('/ready', (request, response) => {
  response.json({ server: 'ok' })
})

app.listen(3000, 'localhost', (error) => {
  if (error) {
    console.error('Something bad happened: %o', error)

    throw new Error(`Something bad happened ${error}`)
  }

  console.log(`Server is listening on host ${hostname} and port ${port}`)
})
```

## Routing
For more information about routing please read the [router](https://www.npmjs.com/package/@devnetic/router) module docs.
```javascript
const server = require('@devnetic/server')
// import * as server from '@devnetic/server'

const app = server.createServer()

app.router.get('/ready', (request, response) => {
  response.json({ server: 'ok' })
})

// http://localhost:3000/users?limit=10&offset=2
server.router.get('/users', (request, response) => {
  console.log(request.query) // { limit: '10', offset: '2' }
})

// http://localhost:3000/users
server.router.post('/users', (request, response) => {
  console.log(request.body)  // the request payload
})

// http://localhost:3000/users/10
server.router.get('/users/:id', (request, response) => {
  console.log(request.params) // { id: '10' }
})

server.listen() // use default port is 3000, but you can use other
```

## Adding a Route Group

```javascript
const groupRoutes = [{
  method: 'post',
  path: 'login',
  handler: (request, response) => {
    response.json({ params: request.params })
  }
}, {
  method: 'post',
  path: 'register',
  handler: (request, response) => {
    response.json({ params: request.params })
  }
}, {
  method: 'get',
  path: 'logout',
  handler: (request, response) => {
    response.json({ params: request.params })
  }
}]

server.router.group('v1', groupRoutes)
server.listen() // use default port is 3000, but you can use other
```

## Configuration

There are configuration options available when you are creating the server:

```javascript
  const app = server.createServer({
    keepAliveTimeout: number
    http2: Object,
    http2: Object
  })
```

The `listen()` method have 3 different signatures and can take `port`, `hostname` and `callback` params.  The signatures are:

```javascript
app.listen(3000, (error) => {})

app.listen(3000, 'localhost')

app.listen(3000, 'localhost', (error) => {})
```

If you use the second signature, a `'::'` value is set like hostname.  Port param is always mandatory.

---
_Source: https://npm.io/package/@devnetic/server · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
