1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/wangankeji-restfx

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 5.2 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 02.03.2025 21:22 d3007e5

restfx

Фреймework для создания RESTful сервисов на Python3.

Основан на werkzeug

Почему использовать этот фреймоворк

Целью разработки этого фреймоворка является повышение производительности разработки.

Этот фреймоворк решает следующие проблемы:

  • Отсутствие сложной конфигурации маршрутов, регистрация маршрутов автоматически выполняется при регистрации корневого модуля. Все маршруты внутри модуля будут автоматически собраны и вызваны.
  • Нет необходимости явно указывать URL маршрутов, они полностью автоматически распознаются.
  • Автоматическое парсинг и валидация запросов, заполнение значений в функциях маршрута, что позволяет избежать сложной работы с получением и проверкой типов параметров. Необходимо просто написать функцию и объявить её параметры.
  • Предоставление страницы со списком API и поддержка тестирования API, позволяющая обновлять API вместе с кодом, без необходимости ручного поддержания документации API. Смотрите скриншоты
  • Поддержка инъекции маршрутов, чтобы передавать данные/функции в маршрут через параметры, тем самым избегая частых импортов и повторного использования кода.

Недостаток данного фреймоворка: отсутствие возможности передачи параметров как части пути URL

Установка

pip install restfx

С версии Yöntem 0.7.1 после установки можно создать базовую структуру проекта с помощью команды CLI restfx:

restfx create projectname

Для использования этой команды может потребоваться установить restfx глобально.

Документация

Документация доступна на Gitee Wiki

Создание приложения

import os

import restfx

if __name__ == '__main__':
    root = os.path.dirname(__file__)
    app = restfx.App(root, api_prefix='any/prefix', debug=True)
    app.map_routes({
        'x': 'test'
    })
    app.map_static(static_map={})
    app.startup(host='127.0.0.1', port=9127)

Определение маршрутов

test/api/demo.py

from restfx import route
from restfx.http import HttpRequest, HttpFile


@route(module='Test module name', name='Test name - GET')
def get(request, param1, param2=None, param3: int = 5):
    # request will be an instance of HttpRequest
    return {
        'param1': param1,
        'param2': param2,
        'param3': param3,
    }


@route(module='Test module name', name='Test name - POST_PARAM')
def post_param(param1, req: HttpRequest, from_=None, param3=5):
    # req will be an instance of HttpRequest
    return {
        'param1': param1,
        'from': from_,
        'param3': param3,
    }


@route(module='Test module name', name='Test name - PUT_PARAM')
def put(request: str, param1, file: HttpFile, param3=5):
    # request will contain the request parameters, HttpRequest not specified in function arguments
    return {
        'request': request,
        'param1': param1,
        'param3': param3,
    }


@route(module='Test module name', name='Test name - DELETE_PARAM')
def delete(request, param1, from_=None, param3=5, **kwargs):
    # undefined request parameters will be passed to kwargs
    return {
        'param1': param1,
        'from': from_,
        'param3': param3,
        'variable_parameters': kwargs
    }

Скриншоты

Ниже приведены скриншоты страницы списка API, соответствующий исходный код маршрутов представлен в файлах

Ниже приведены скриншоты, видимые только в каталоге Gitee репозитория

лист

тест

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/wangankeji-restfx.git
git@api.gitlife.ru:oschina-mirror/wangankeji-restfx.git
oschina-mirror
wangankeji-restfx
wangankeji-restfx
master