CheeseAPI


NameCheeseAPI JSON
Version 1.1.4 PyPI version JSON
download
home_pageNone
Summary一款web协程框架。
upload_time2024-04-30 06:33:28
maintainerNone
docs_urlNone
authorNone
requires_pythonNone
licenseNone
keywords api backend
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # **CheeseAPI**

## **介绍**

一款协程友好的web框架,它具有以下功能:

1. 插件支持,更可塑的事件处理以及个性化设置。

2. 以模块为主的项目结构,以及灵活的模块导入方式。

3. Websocket支持。

## **安装**

系统要求:Linux。

Python要求:目前仅保证支持3.12版本的Python,新版本会优先支持Python的最新稳定版本。

```
pip install CheeseAPI
```

## **依赖**

1. **[CheeseLog](https://github.com/CheeseUnknown/CheeseLog)**

日志系统,CheeseAPI使用它进行日志的输出与记录。

## **项目结构**

CheeseAPI采用模块结构:

```
| - User
    | - __init__.py
    | - model.py
    | - api.py
    | - service.py
    | - handle.py
    | - validator.py
| - Permission
    | - __init__.py
    | - model.py
    | - api.py
    | - service.py
    | - validator.py
| - __init__.py
| - app.py
```

CheeseAPI并没有强制规定文件名,但建议的文件命名方式如下:

| 文件名 | 备注 |
| - | - |
| \_\_init\_\_.py | 公用变量 |
| model.py | ORM或类 |
| api.py | API接口 |
| service.py | 业务逻辑实现 |
| handle.py | 插槽逻辑 |
| validator.py | 参数校验 |

一般来说,模块中的文件调用有明显的顺序关系(从顶层到底层):

```
handle.py --|
            |-> service.py -> model.py -> __init__.py
api.py -----|
            |-> validator.py
```

## **使用**

创建一个启动入口文件`app.py`:

```python
from CheeseAPI import app, Response

@app.route.get('/')
async def index(**kwargs):
    return Response('这里是CheeseAPI!')

app.run()
```

运行`app.py`,可以看到打印了一些服务器的基本信息:

```
$ python app.py
(STARTING) 2024-03-19 14:03:12.405969 > The master process 346 started
(STARTING) 2024-03-19 14:03:12.406156 > Workspace Information:
    Base: /home/cheese/Code/CheeseAPI
    Static: ./static/
(STARTING) 2024-03-19 14:03:12.406235 > Server Information:
    Host: 0.0.0.0
    Port: 5214
    Workers: 1
    Backlog: 1024
    Static: /
(LOADED) 2024-03-19 14:03:12.418829 > Local Modules:
    CheeseAPI
(DEBUG) 2024-03-19 14:03:12.418939 > The process 346 started
(STARTING) 2024-03-19 14:03:12.419363 > The server started on 0.0.0.0:5214
```

出现`The process xxx started`日志时,代表其中某个worker已启动,此时已经可以进行网络请求访问;出现`The server started on 0.0.0.0:5214`日志时,代表服务器已完全启动。

使用`ctrl + c`或`kill`命令杀死主进程,会输出结束日志,此时整个程序才算正式关闭:

```
(DEBUG) 2024-03-19 14:05:40.350681 > The process 346 stopped
(ENDING) 2024-03-19 14:05:40.350816 > The server runs for a total of 2 minutes 27.944854 seconds
(ENDING) 2024-03-19 14:05:40.350849 > The master process 346 stopped
```

## **更多...**

### 1. [**Demo**](https://github.com/CheeseUnknown/CheeseAPI/blob/master/document/Demo.md)

#### 1.1 [**简单的增删改查 (CRUD)**](https://github.com/CheeseUnknown/CheeseAPI/blob/master/demo/CRUD)

### 2. [**App (主模块)**](https://github.com/CheeseUnknown/CheeseAPI/blob/master/document/App.md)

#### 2.1 [**Server (服务器配置)**](https://github.com/CheeseUnknown/CheeseAPI/blob/master/document/App/Server.md)

#### 2.2 [**Workspace (工作区配置)**](https://github.com/CheeseUnknown/CheeseAPI/blob/master/document/App/Workspace.md)

#### 2.3 [**Signal (信号插槽)**](https://github.com/CheeseUnknown/CheeseAPI/blob/master/document/App/Signal.md)

#### 2.4 [**RouteBus (路由总线)**](https://github.com/CheeseUnknown/CheeseAPI/blob/master/document/App/RouteBus.md)

#### 2.5 [**Cors (跨域管理)**](https://github.com/CheeseUnknown/CheeseAPI/blob/master/document/App/Cors.md)

#### 2.6 [**Scheduler (任务调度者)**](https://github.com/CheeseUnknown/CheeseAPI/blob/master/document/App/Scheduler.md)

### 3. [**Request (请求体)**](https://github.com/CheeseUnknown/CheeseAPI/blob/master/document/Request.md)

### 4. [**Response (响应体)**](https://github.com/CheeseUnknown/CheeseAPI/blob/master/document/Response.md)

### 5. [**Route (路由)**](https://github.com/CheeseUnknown/CheeseAPI/blob/master/document/Route.md)

### 6. [**Websocket**](https://github.com/CheeseUnknown/CheeseAPI/blob/master/document/Websocket.md)

### 7. [**File (文件)**](https://github.com/CheeseUnknown/CheeseAPI/blob/master/document/File.md)

### 8. [**Validator (校验器)**](https://github.com/CheeseUnknown/CheeseAPI/blob/master/document/Validator.md)

### 9. [**Schedule (任务调度)**](https://github.com/CheeseUnknown/CheeseAPI/blob/master/document/Schedule.md)

### 10. [**For 开发者**](https://github.com/CheeseUnknown/CheeseAPI/blob/master/document/Developer.md)

## **可用的插件模块**

### 1. **[CheeseAPI_Websocket](https://github.com/CheeseUnknown/CheeseAPI_Websocket)**

websocket的升级插件,支持了更多、更便捷的通讯方式。

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "CheeseAPI",
    "maintainer": null,
    "docs_url": null,
    "requires_python": null,
    "maintainer_email": null,
    "keywords": "API, BackEnd",
    "author": null,
    "author_email": "Cheese Unknown <cheese@cheese.ren>",
    "download_url": "https://files.pythonhosted.org/packages/24/c6/641bbf3419ba2842bf61708f576ede6557df1e131129d052b0e94082375d/cheeseapi-1.1.4.tar.gz",
    "platform": null,
    "description": "# **CheeseAPI**\n\n## **\u4ecb\u7ecd**\n\n\u4e00\u6b3e\u534f\u7a0b\u53cb\u597d\u7684web\u6846\u67b6\uff0c\u5b83\u5177\u6709\u4ee5\u4e0b\u529f\u80fd\uff1a\n\n1. \u63d2\u4ef6\u652f\u6301\uff0c\u66f4\u53ef\u5851\u7684\u4e8b\u4ef6\u5904\u7406\u4ee5\u53ca\u4e2a\u6027\u5316\u8bbe\u7f6e\u3002\n\n2. \u4ee5\u6a21\u5757\u4e3a\u4e3b\u7684\u9879\u76ee\u7ed3\u6784\uff0c\u4ee5\u53ca\u7075\u6d3b\u7684\u6a21\u5757\u5bfc\u5165\u65b9\u5f0f\u3002\n\n3. Websocket\u652f\u6301\u3002\n\n## **\u5b89\u88c5**\n\n\u7cfb\u7edf\u8981\u6c42\uff1aLinux\u3002\n\nPython\u8981\u6c42\uff1a\u76ee\u524d\u4ec5\u4fdd\u8bc1\u652f\u63013.12\u7248\u672c\u7684Python\uff0c\u65b0\u7248\u672c\u4f1a\u4f18\u5148\u652f\u6301Python\u7684\u6700\u65b0\u7a33\u5b9a\u7248\u672c\u3002\n\n```\npip install CheeseAPI\n```\n\n## **\u4f9d\u8d56**\n\n1. **[CheeseLog](https://github.com/CheeseUnknown/CheeseLog)**\n\n\u65e5\u5fd7\u7cfb\u7edf\uff0cCheeseAPI\u4f7f\u7528\u5b83\u8fdb\u884c\u65e5\u5fd7\u7684\u8f93\u51fa\u4e0e\u8bb0\u5f55\u3002\n\n## **\u9879\u76ee\u7ed3\u6784**\n\nCheeseAPI\u91c7\u7528\u6a21\u5757\u7ed3\u6784\uff1a\n\n```\n| - User\n    | - __init__.py\n    | - model.py\n    | - api.py\n    | - service.py\n    | - handle.py\n    | - validator.py\n| - Permission\n    | - __init__.py\n    | - model.py\n    | - api.py\n    | - service.py\n    | - validator.py\n| - __init__.py\n| - app.py\n```\n\nCheeseAPI\u5e76\u6ca1\u6709\u5f3a\u5236\u89c4\u5b9a\u6587\u4ef6\u540d\uff0c\u4f46\u5efa\u8bae\u7684\u6587\u4ef6\u547d\u540d\u65b9\u5f0f\u5982\u4e0b\uff1a\n\n| \u6587\u4ef6\u540d | \u5907\u6ce8 |\n| - | - |\n| \\_\\_init\\_\\_.py | \u516c\u7528\u53d8\u91cf |\n| model.py | ORM\u6216\u7c7b |\n| api.py | API\u63a5\u53e3 |\n| service.py | \u4e1a\u52a1\u903b\u8f91\u5b9e\u73b0 |\n| handle.py | \u63d2\u69fd\u903b\u8f91 |\n| validator.py | \u53c2\u6570\u6821\u9a8c |\n\n\u4e00\u822c\u6765\u8bf4\uff0c\u6a21\u5757\u4e2d\u7684\u6587\u4ef6\u8c03\u7528\u6709\u660e\u663e\u7684\u987a\u5e8f\u5173\u7cfb\uff08\u4ece\u9876\u5c42\u5230\u5e95\u5c42\uff09\uff1a\n\n```\nhandle.py --|\n            |-> service.py -> model.py -> __init__.py\napi.py -----|\n            |-> validator.py\n```\n\n## **\u4f7f\u7528**\n\n\u521b\u5efa\u4e00\u4e2a\u542f\u52a8\u5165\u53e3\u6587\u4ef6`app.py`\uff1a\n\n```python\nfrom CheeseAPI import app, Response\n\n@app.route.get('/')\nasync def index(**kwargs):\n    return Response('\u8fd9\u91cc\u662fCheeseAPI\uff01')\n\napp.run()\n```\n\n\u8fd0\u884c`app.py`\uff0c\u53ef\u4ee5\u770b\u5230\u6253\u5370\u4e86\u4e00\u4e9b\u670d\u52a1\u5668\u7684\u57fa\u672c\u4fe1\u606f\uff1a\n\n```\n$ python app.py\n(STARTING) 2024-03-19 14:03:12.405969 > The master process 346 started\n(STARTING) 2024-03-19 14:03:12.406156 > Workspace Information:\n    Base: /home/cheese/Code/CheeseAPI\n    Static: ./static/\n(STARTING) 2024-03-19 14:03:12.406235 > Server Information:\n    Host: 0.0.0.0\n    Port: 5214\n    Workers: 1\n    Backlog: 1024\n    Static: /\n(LOADED) 2024-03-19 14:03:12.418829 > Local Modules:\n    CheeseAPI\n(DEBUG) 2024-03-19 14:03:12.418939 > The process 346 started\n(STARTING) 2024-03-19 14:03:12.419363 > The server started on 0.0.0.0:5214\n```\n\n\u51fa\u73b0`The process xxx started`\u65e5\u5fd7\u65f6\uff0c\u4ee3\u8868\u5176\u4e2d\u67d0\u4e2aworker\u5df2\u542f\u52a8\uff0c\u6b64\u65f6\u5df2\u7ecf\u53ef\u4ee5\u8fdb\u884c\u7f51\u7edc\u8bf7\u6c42\u8bbf\u95ee\uff1b\u51fa\u73b0`The server started on 0.0.0.0:5214`\u65e5\u5fd7\u65f6\uff0c\u4ee3\u8868\u670d\u52a1\u5668\u5df2\u5b8c\u5168\u542f\u52a8\u3002\n\n\u4f7f\u7528`ctrl + c`\u6216`kill`\u547d\u4ee4\u6740\u6b7b\u4e3b\u8fdb\u7a0b\uff0c\u4f1a\u8f93\u51fa\u7ed3\u675f\u65e5\u5fd7\uff0c\u6b64\u65f6\u6574\u4e2a\u7a0b\u5e8f\u624d\u7b97\u6b63\u5f0f\u5173\u95ed\uff1a\n\n```\n(DEBUG) 2024-03-19 14:05:40.350681 > The process 346 stopped\n(ENDING) 2024-03-19 14:05:40.350816 > The server runs for a total of 2 minutes 27.944854 seconds\n(ENDING) 2024-03-19 14:05:40.350849 > The master process 346 stopped\n```\n\n## **\u66f4\u591a...**\n\n### 1. [**Demo**](https://github.com/CheeseUnknown/CheeseAPI/blob/master/document/Demo.md)\n\n#### 1.1 [**\u7b80\u5355\u7684\u589e\u5220\u6539\u67e5 (CRUD)**](https://github.com/CheeseUnknown/CheeseAPI/blob/master/demo/CRUD)\n\n### 2. [**App \uff08\u4e3b\u6a21\u5757\uff09**](https://github.com/CheeseUnknown/CheeseAPI/blob/master/document/App.md)\n\n#### 2.1 [**Server \uff08\u670d\u52a1\u5668\u914d\u7f6e\uff09**](https://github.com/CheeseUnknown/CheeseAPI/blob/master/document/App/Server.md)\n\n#### 2.2 [**Workspace \uff08\u5de5\u4f5c\u533a\u914d\u7f6e\uff09**](https://github.com/CheeseUnknown/CheeseAPI/blob/master/document/App/Workspace.md)\n\n#### 2.3 [**Signal \uff08\u4fe1\u53f7\u63d2\u69fd\uff09**](https://github.com/CheeseUnknown/CheeseAPI/blob/master/document/App/Signal.md)\n\n#### 2.4 [**RouteBus \uff08\u8def\u7531\u603b\u7ebf\uff09**](https://github.com/CheeseUnknown/CheeseAPI/blob/master/document/App/RouteBus.md)\n\n#### 2.5 [**Cors \uff08\u8de8\u57df\u7ba1\u7406\uff09**](https://github.com/CheeseUnknown/CheeseAPI/blob/master/document/App/Cors.md)\n\n#### 2.6 [**Scheduler \uff08\u4efb\u52a1\u8c03\u5ea6\u8005\uff09**](https://github.com/CheeseUnknown/CheeseAPI/blob/master/document/App/Scheduler.md)\n\n### 3. [**Request \uff08\u8bf7\u6c42\u4f53\uff09**](https://github.com/CheeseUnknown/CheeseAPI/blob/master/document/Request.md)\n\n### 4. [**Response \uff08\u54cd\u5e94\u4f53\uff09**](https://github.com/CheeseUnknown/CheeseAPI/blob/master/document/Response.md)\n\n### 5. [**Route \uff08\u8def\u7531\uff09**](https://github.com/CheeseUnknown/CheeseAPI/blob/master/document/Route.md)\n\n### 6. [**Websocket**](https://github.com/CheeseUnknown/CheeseAPI/blob/master/document/Websocket.md)\n\n### 7. [**File \uff08\u6587\u4ef6\uff09**](https://github.com/CheeseUnknown/CheeseAPI/blob/master/document/File.md)\n\n### 8. [**Validator \uff08\u6821\u9a8c\u5668\uff09**](https://github.com/CheeseUnknown/CheeseAPI/blob/master/document/Validator.md)\n\n### 9. [**Schedule \uff08\u4efb\u52a1\u8c03\u5ea6\uff09**](https://github.com/CheeseUnknown/CheeseAPI/blob/master/document/Schedule.md)\n\n### 10. [**For \u5f00\u53d1\u8005**](https://github.com/CheeseUnknown/CheeseAPI/blob/master/document/Developer.md)\n\n## **\u53ef\u7528\u7684\u63d2\u4ef6\u6a21\u5757**\n\n### 1. **[CheeseAPI_Websocket](https://github.com/CheeseUnknown/CheeseAPI_Websocket)**\n\nwebsocket\u7684\u5347\u7ea7\u63d2\u4ef6\uff0c\u652f\u6301\u4e86\u66f4\u591a\u3001\u66f4\u4fbf\u6377\u7684\u901a\u8baf\u65b9\u5f0f\u3002\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "\u4e00\u6b3eweb\u534f\u7a0b\u6846\u67b6\u3002",
    "version": "1.1.4",
    "project_urls": {
        "Source": "https://github.com/CheeseUnknown/CheeseAPI"
    },
    "split_keywords": [
        "api",
        " backend"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "86c6ff757da1b0f0e93582d84b90c55aa7c66988bde586d8a63277edb039819e",
                "md5": "b6f306019d3bfbc819cfe70048c6ee38",
                "sha256": "9792de4ebff616ba0e6048c865bbaa88714bc4749898f54a646107240f30f86f"
            },
            "downloads": -1,
            "filename": "cheeseapi-1.1.4-py2.py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "b6f306019d3bfbc819cfe70048c6ee38",
            "packagetype": "bdist_wheel",
            "python_version": "py2.py3",
            "requires_python": null,
            "size": 32430,
            "upload_time": "2024-04-30T06:33:26",
            "upload_time_iso_8601": "2024-04-30T06:33:26.075406Z",
            "url": "https://files.pythonhosted.org/packages/86/c6/ff757da1b0f0e93582d84b90c55aa7c66988bde586d8a63277edb039819e/cheeseapi-1.1.4-py2.py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "24c6641bbf3419ba2842bf61708f576ede6557df1e131129d052b0e94082375d",
                "md5": "14fbcfd989e1df0b6977309bb9bf5fab",
                "sha256": "f221c9fc2130029925644429c99ac91bcd3f25bfdc9eff71537d58bb8ae59b1d"
            },
            "downloads": -1,
            "filename": "cheeseapi-1.1.4.tar.gz",
            "has_sig": false,
            "md5_digest": "14fbcfd989e1df0b6977309bb9bf5fab",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 26139,
            "upload_time": "2024-04-30T06:33:28",
            "upload_time_iso_8601": "2024-04-30T06:33:28.383854Z",
            "url": "https://files.pythonhosted.org/packages/24/c6/641bbf3419ba2842bf61708f576ede6557df1e131129d052b0e94082375d/cheeseapi-1.1.4.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-04-30 06:33:28",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "CheeseUnknown",
    "github_project": "CheeseAPI",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "cheeseapi"
}
        
Elapsed time: 0.25297s