Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kootenpv/aserve
Easily mock an API :coffee:
https://github.com/kootenpv/aserve
Last synced: about 1 month ago
JSON representation
Easily mock an API :coffee:
- Host: GitHub
- URL: https://github.com/kootenpv/aserve
- Owner: kootenpv
- Created: 2016-02-17T19:24:13.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2016-12-06T17:54:48.000Z (almost 8 years ago)
- Last Synced: 2024-08-06T08:16:49.602Z (about 1 month ago)
- Language: Python
- Size: 11.7 KB
- Stars: 50
- Watchers: 4
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## aserve (pre-alpha)
The goal of aserve is to make it easy to "asynchronously serve an API". If you want to
serve some text, json, or echo a request: aserve enables quick
testing... just run `aserve`.- Hackathon: give your buddy an endpoint with a statically served JSON
- Server-to-server: viewing how a request looks like with headers etc
- Send your custom response: use `pdb` to drop in a request and return a response manually
- New: Serve a python file with functions!### Features
- Easy to use, just a command line required ;)
- Asynchronous
- Serve different types of data
- Automatically supports GET/POST/HEAD/OPTIONS
- Pipe data to aserve to serve it: `cat some.json | aserve`
- **UPDATE**: Serve all functions [automagically](#serving-python-functions) with `aserve my_filename.py`### Installation
Only works on Python 3.5+ at the moment.
pip3.5 install aserve
### How to:
```
usage: aserve [-h] [--debug] [--port PORT] [--verbose] [--file FILE] [--sleep SLEEP]Asynchronously Serve an API with aserve.
optional arguments:
-h, --help show this help message and exit
--debug, -d Uses "pdb" to drop you into the request, BEFORE replying
--port PORT, -p PORT Port where to host
--verbose, -v Talks.... a lot.
--file FILE, -f FILE Loads file (COMING VERY SOON)
--sleep SLEEP, -s SLEEP seconds to wait before delivering
```### Default routes
```
/get_echo
/get_file
/get_json
/get_text
/head_echo
/head_file
/head_json
/head_text
/options_echo
/options_file
/options_json
/options_text
/post_echo
/post_file
/post_json
/post_text
```### Serving python functions
Given `filenamy.py`:
```python
def concatenate(x, y):
return x + yimport asyncio
async def concatenate_async(x, y):
await asyncio.sleep(1)
return x + y
```this file can be served with aserve using `aserve /path/to/filename.py`.
You can then GET (with query parameters):
```python
import requests
url = "http://localhost:port/filename/concatenate"
requests.get(url + "?x=hello&y=world").text
requests.get(url + "_async" + "?x=hello&y=world").text
```and POST:
```python
import requests
import json
url = "http://localhost:port/filename/concatenate"
requests.get(url, data=json.dumps({"x": "hello", "y": "word"})).json
requests.get(url + "_async", data=json.dumps({"x": "hello", "y": "word"})).json
```### Caveats
Currently, it uses `aiohttp` and asyncio, and aserve is only available from Python 3.5+. It should be possible in the future to use a different backend.
Reasons for a different backend might be to not require any other installation, or perhaps to support older versions of Python.