Coding

Hug – Simplify API Development with this Python Microframework

hug (Hopefully Useful Guide) is a microframework for exposing idiomatically correct and standard internal Python APIs externally.

It is a framework to allow developers and architects to define logic and structure once, and then cleanly expose it over other means.

hug has very minimal base system requirements – a local installation of Python3.3+, and optionally inside a virtualenv. Additionally, pip is required, but this is included with most Python3 installations by default.

Key Features

  • Clean way to create HTTP REST APIs.
  • Seamless micro-service communication, which makes it easy to switch out pure Python calls for HTTP communication and vice versa.
  • Expandable type system for simple parameters.
  • Full integrated support for Marshmallow, an advanced serialization, deserialization, and validation library. Hug supports using marshmallow fields and schemas as input types.
  • Python3 type annotations for validation and API specification.
  • Provides a handful of directives for commonly needed attributes.
    • number: Validates that a whole number was passed in.
    • float_number: Validates that a valid floating point number was passed in.
    • decimal: Validates and converts the provided value into a Python Decimal object.
    • uuid: Validates that the provided value is a valid UUID.
    • text: Validates that the provided value is a single string parameter.
    • multiple: Ensures the parameter is passed in as a list (even if only one value is passed).
    • boolean: A basic naive HTTP style boolean where no value passed in is seen as ‘False’ and any value passed in (even if its ‘false’) is seen as ‘True’.
    • smart_boolean: A smarter, but more CPU expensive, boolean that checks the content of the value for common true / false formats (true, True, t, 1) or (false, False, f, 0).
    • delimited_list(delimiter): splits up the passed in value based on the provided delimiter and then passes it to the function as a list.
    • one_of (values): Validates that the passed in value is one of those specified.
    • mapping(dict_of_passed_in_to_desired_values): Like ‘one_of’, but with a dictionary of acceptable values, to converted value.
    • multi(types): Allows passing in multiple acceptable types for a parameter, short circuiting on the first acceptable one/
    • in_range(lower, upper, convert=number): Accepts a number within a lower and upper bound of acceptable values.
    • less_than(limit, convert=number): Accepts a number within a lower and upper bound of acceptable values.
    • – `greater_than(minimum, convert=number)`: Accepts a value above a given minimum
    • length(lower, upper, convert=text): Accepts a value that is within a specific length limit.
    • shorter_than(limit, convert=text): Accepts a text value shorter than the specified length limit/
    • longer_than(limit, convert=text): Accepts a value up to the specified limit.
    • cut_off(limit, convert=text): Cuts off the provided value at the specified index.
  • Create new directives.
  • Hug routing:
    • Can be used directly as function decorators.
    • Can be used separately from the function.
    • Can be stored, modified, and chained before being used. Every route object is chainable and doesn’t perform any actions until it is ran against a function, method, or object.
  • Supports any WSGI server that uses autoreloading, for example Gunicorn and uWSGI.
  • Built upon Falcon’s high performance HTTP library.
  • Split APIs over multiple files.

Website: github.com/hugapi/hug
Support:
Developer: Timothy Edmund Crosley
License: MIT License

hug is written in Python. Learn Python with our recommended free books and free tutorials.


Related Software

Best Python Micro Frameworks
FlaskHugely popular microframework based on Werkzeug and Jinja2
FastAPIWeb framework for building APIs
StarletteLightweight ASGI framework/toolkit
aiohttpAsynchronous HTTP client/server for asyncio and Python
SanicWeb server and web framework
FalconBuild cloud APIs, smart proxies, and app backends
QuartWeb microframework based on Asyncio
PyramidStart small, finish big, stay finished framework
BottleFast, simple and lightweight WSGI micro web framework
ChalicePython Serverless Microframework for AWS
CherryPyMature, minimalist, Python object-oriented web framework
TurboGearsHybrid framework acting as a Full Stack framework or Microframework
QuixoteAimed at sites where complex programming is required
KleinMicro-framework for developing production-ready web services with Python
circuitsLightweight event driven application framework
ClasticFunctional web framework
HugMake developing Python driven APIs as simple as possible
MicroPieUltra-micro ASGI Python web framework
LitestarPowerful, lightweight, and flexible ASGI framework
BlackSheepAsynchronous Python web framework
RobynPython web framework designed for high performance
MicrodotSmall web framework for Python and MicroPython

Read our verdict in the software roundup.


Best Free and Open Source Software Explore our comprehensive directory of recommended free and open source software. Our carefully curated collection spans every major software category.

This directory is part of our ongoing series of informative articles for Linux enthusiasts. It features hundreds of detailed reviews, along with open source alternatives to proprietary solutions from major corporations such as Google, Microsoft, Apple, Adobe, IBM, Cisco, Oracle, and Autodesk.

You’ll also find interesting projects to try, hardware coverage, free programming books and tutorials, and much more.

Discovered a useful open source Linux program that we haven’t covered yet? Let us know by completing this form.
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted