Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/devpaul/webserv
A development web server written in TypeScript
https://github.com/devpaul/webserv
proxy server typescript
Last synced: 24 days ago
JSON representation
A development web server written in TypeScript
- Host: GitHub
- URL: https://github.com/devpaul/webserv
- Owner: devpaul
- License: mpl-2.0
- Created: 2017-01-05T23:09:45.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2022-12-11T07:33:42.000Z (almost 2 years ago)
- Last Synced: 2024-09-14T13:51:11.806Z (about 2 months ago)
- Topics: proxy, server, typescript
- Language: TypeScript
- Homepage:
- Size: 1.66 MB
- Stars: 6
- Watchers: 3
- Forks: 4
- Open Issues: 19
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# Webserv
[![Build Status](https://travis-ci.org/devpaul/webserv.svg?branch=master)](https://travis-ci.org/devpaul/webserv)
[![Windows build status](https://ci.appveyor.com/api/projects/status/pwxbf43ctu05uxn8?svg=true)](https://ci.appveyor.com/project/devpaul/webserv)
[![npm version](https://badge.fury.io/js/webserv.svg)](https://badge.fury.io/js/webserv)## Why use `webserv`?
Webserv's aim is to have a fast, simple way to provide a backend to your projects. We want to enable developers to start working on their experience immediately.
Serve a folder right now without installing anything using `npx`.
```
npx webserv
```Webserv comes with standard server patterns. Start a proxy, CRUD server, upload, or log connections from the command-line. Have a more complex use case? `webserv` supports JSON configs and has a fully-typed programmatic API so you will *never* be stuck.
Want to learn more? Look at our [examples](https://github.com/devpaul/webserv/tree/master/examples) and read through our [documentation](https://github.com/devpaul/webserv/tree/master/docs).
## Command Line
Webserv allows you to quickly start a fully fledged development server from the command line without editing a single file.
### Command-line Options
#### -m, --mode { http | https }
Create a `http` or `https` server (defaults to http)
```
webserv -m https
```https servers will auto-generate self-signed certificates
#### -l, --log
Log all requests to the console
```
webserv -l
```#### -p, --port
Set the port to use (defaults to 8888)
```
webserv -p 8000
```#### -t crud
Start a basic CRUD server
```
webserv -t crud
```This server keeps records in an internal store.
* GET `/` will list all of the records
* POST `/` with a json object in the body with an `id` to add a record
* PUT `/` with a json object in the body to update a record
* GET `/id/:id` to view a single record
* DELETE `/id/:id` to delete a record#### -t file {directory}
Serve the directory.
This is the default server type. If the `directory` is omitted the current directory will be served.
```
webserv -t file ./dist
```#### -t log
Create a log server that logs all request to the console and returns 200.
```
webserv -t log
```#### -t proxy {target}
Create a proxy server.
```
webserv -t proxy http://devpaul.com
```#### -t upload {directory}
Create an upload server.
`directory` is the location where uploaded files will be stored
```
webserv -t upload ./files
```* GET `/` provides an interface to upload files
* POST `/` uploads the file(s)
* GET `/list` lists files that have been uploaded## webserv configuration
Webserv supports more complex usage through config files. When a file named `webserv.json` is present or when `webserv` is launched using the `-c ` option, webserv will launch using the provided configuration.
The available configurations match the server types (available with the `-t` option): crud, file, log, proxy, and upload.
See the [configuration documentation](https://github.com/devpaul/webserv/blob/master/docs/configuration.md) for all of the details.
## Programmatic API
For users that may need to create their own services or have complex use cases that are not served the configuration, `webserv` offers a fully-typed programmatic API written in TypeScript. See the [hello world example](https://github.com/devpaul/webserv/blob/master/examples/hello-world/services/hello.ts) for example usage.