The hug framework is on the top 3 performing web frameworks for Python and comes with the cleanest way to create HTTP REST APIs on Python 3.
The official webpage can be found hug web page with a good area for learn.
Let's install this python package.
[mythcat@desk projects]$ mkdir hug_001
[mythcat@desk projects]$ cd hug_001/
[mythcat@desk hug_001]$ pip3 install hug --user
...
Successfully installed hug-2.6.1
The Hug is a framework that allows you to expose a single code in several ways:- a local package;
- as an A.P.I.;
- as a C.L.I.;
import hug
# local pkg
@hug.local()
def get_products(product:hug.types.text):
"""Get product name"""
return {"product":product.upper()}
# API
@hug.get()
# CLI
@hug.cli()
To test it I used this source code:import hug
# local pkg
@hug.get()
@hug.local()
def get_products(product:hug.types.text):
"""Get product name"""
return {"product":product.upper()}
The rerver can be run with this command:[mythcat@desk hug_001]$ hug -f app.py
/#######################################################################\
`.----``..-------..``.----.
:/:::::--:---------:--::::://.
.+::::----##/-/oo+:-##----:::://
`//::-------/oosoo-------::://. ## ## ## ## #####
.-:------./++o/o-.------::-` ``` ## ## ## ## ##
`----.-./+o+:..----. `.:///. ######## ## ## ##
``` `----.-::::::------ `.-:::://. ## ## ## ## ## ####
://::--.``` -:``...-----...` `:--::::::-.` ## ## ## ## ## ##
:/:::::::::-:- ````` .:::::-.` ## ## #### ######
``.--:::::::. .:::.`
``..::. .:: EMBRACE THE APIs OF THE FUTURE
::- .:-
-::` ::- VERSION 2.6.1
`::- -::`
-::-` -::-
\########################################################################/
Copyright (C) 2016 Timothy Edmund Crosley
Under the MIT License
Serving on :8000...
OPen the browser with the http://localhost:8000/ or http://localhost:8000/products:If you want to use the CLI then you need to make these changes in the source code:
import hug
# cli
@hug.cli()
# local pkg
@hug.get('/products')
@hug.local()
def get_products(product:hug.types.text):
"""Get product name"""
return {"product":product.upper()}
# the main CLI
if __name__ == '__main__':
get_products.interface.cli()
I can see the help area from python:[mythcat@desk hug_001]$ hug -f app.py -c help
app
Available Commands:
- get_products: Get product name
The hug help show the all arguments for use:[mythcat@desk hug_001]$ hug --help
usage: hug [-h] [-v] [-f FILE] [-m MODULE] [-ho HOST] [-p PORT] [-n] [-ma]
[-i INTERVAL] [-c COMMAND] [-s]
Hug API Development Server
optional arguments:
-h, --help show this help message and exit
-v, --version show program's version number and exit
-f FILE, --file FILE file
-m MODULE, --module MODULE
module
-ho HOST, --host HOST
host
-p PORT, --port PORT A whole number
-n, --no_404_documentation
Providing any value will set this to true
-ma, --manual_reload Providing any value will set this to true
-i INTERVAL, --interval INTERVAL
A whole number
-c COMMAND, --command COMMAND
command
-s, --silent Providing any value will set this to true