# DaShare-数据服务接口包
   

## 介绍
+ DaShare是一个数据服务接口包,主要功能是为底层数据向外提供了一个接口服务,可实现用户权限验证和流量限制。DaShare采用Client-Server架构设计,服务端使用HTTP协议构建数据服务的OpenAPI,暂时采用GET-method,客户端封装为python-sdk,提供python数据接口功能;用户权限采用token机制。
## 安装
dashare采用Python开发,得益于Python良好的社区环境,安装支持Pythonic风格的各种管理器。
```
$ pip install dashare-0.1-xxxxxxxxxxxx.whl
```
## 快速指南
### 服务端使用
+ 对于服务端数据服务启动,首先使用dashare命令行进行元数据库初始化,然后再启动服务端服务。以下是dasharectl命令行示例:
```bash
$ dasharectl set-metadb
$ dasharectl start-service
````
### 客户端使用
+ 对于客户端,dashare支持http协议的接口和python-sdk两种方式。
+ http接口使用
1.注册用户示例
```bash
$ curl http://127.0.0.1:11911/user/register?user=test&password=123456
```
2.登录用户示例
```bash
$ curl http://127.0.0.1:11911/user/login?user=test&password=123456
```
3.用户生成token示例
```bash
$ curl http://127.0.0.1:11911/user/gen_token?user=test&token_key=7890
```
4.用户获取token示例
```bash
$ http://127.0.0.1:11911/user/get_token?user=test&password=123456
```
5.用户调用数据接口示例(用户调用数据接口需要经过前提流程,注册用户-登录用户-生成token-使用token获取数据)
```bash
$ http://127.0.0.1:11911/meteorological/get_wind_nwp_data_updated?token_key=7890&token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2NjU1Mzg0MzkuMTU3MTQzLCJ1c2VyIjoidGVzdCJ9.ZXdp688IIJgnFgSqgRx7rXBxYNK0LLDZTuQL_P09saE&entity=XJJX&start_time=2022-05-30,00:00:00&end_time=2022-06-01,00:00:00
```
+ python-sdk使用,以下是dashare主程脚本代码示例:
```python
from dashare.client.api import DataAPI
### 设置除了token_key和token外,额外的参数
tmp_dict = {}
tmp_dict['entity'] = 'XJJX'
tmp_dict['start_time'] = '2022-05-30,00:00:00'
tmp_dict['end_time'] = '2022-06-01,00:00:00'
dashare = DataAPI(token_key = 7890,
token='eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2NjU0NjkxMTQuMTI4MDg4LCJ1c2VyIjoidGVzdCJ9.HgmyjDabinqOxU9v7DaKsPraFZd948SMfA9HGhTg-7U',
timeout=6000)
# df = dashare.query(dataapi='get_meteorological_data_local',params=tmp_dict)
# df = dashare.get_wind_nwp_data_updated_local(params=tmp_dict)
# df = dashare.get_wind_nwp_data_history_local(params=tmp_dict)
# df = dashare.get_wind_measure_data_local(params=tmp_dict)
df = dashare.get_wind_turbine_data_local(params=tmp_dict)
print(df)
```
## 设计
+ 采用Client-Server架构设计
+ 服务端使用HTTP协议构建数据服务的OpenAPI
+ 用户权限采用token机制
+ 用户流量限制
### 技术列表
+ 元编程技术-partial技术
+ 元编程技术-__getattr__技术
+ 微服务-FastAPI
+ 加密验证-Token-JWT技术
+ 数据库-SQLite3
### 设计UML图
以下是设计的UML图:

Raw data
{
"_id": null,
"home_page": "https://github.com/redblue0216/DaShare",
"name": "shihua-dashare",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.9.12",
"maintainer_email": "",
"keywords": "",
"author": "shihua",
"author_email": "15021408795@163.com",
"download_url": "https://files.pythonhosted.org/packages/32/f1/533abc66c0b356d1deba9bdd0f5fbd548952c40cf68d82b4980da20b4c53/shihua-dashare-0.1.tar.gz",
"platform": null,
"description": "# DaShare-\u6570\u636e\u670d\u52a1\u63a5\u53e3\u5305\n\n   \n\n\n\n## \u4ecb\u7ecd\n+ DaShare\u662f\u4e00\u4e2a\u6570\u636e\u670d\u52a1\u63a5\u53e3\u5305\uff0c\u4e3b\u8981\u529f\u80fd\u662f\u4e3a\u5e95\u5c42\u6570\u636e\u5411\u5916\u63d0\u4f9b\u4e86\u4e00\u4e2a\u63a5\u53e3\u670d\u52a1,\u53ef\u5b9e\u73b0\u7528\u6237\u6743\u9650\u9a8c\u8bc1\u548c\u6d41\u91cf\u9650\u5236\u3002DaShare\u91c7\u7528Client-Server\u67b6\u6784\u8bbe\u8ba1\uff0c\u670d\u52a1\u7aef\u4f7f\u7528HTTP\u534f\u8bae\u6784\u5efa\u6570\u636e\u670d\u52a1\u7684OpenAPI,\u6682\u65f6\u91c7\u7528GET-method,\u5ba2\u6237\u7aef\u5c01\u88c5\u4e3apython-sdk,\u63d0\u4f9bpython\u6570\u636e\u63a5\u53e3\u529f\u80fd\uff1b\u7528\u6237\u6743\u9650\u91c7\u7528token\u673a\u5236\u3002\n\n\n## \u5b89\u88c5\ndashare\u91c7\u7528Python\u5f00\u53d1\uff0c\u5f97\u76ca\u4e8ePython\u826f\u597d\u7684\u793e\u533a\u73af\u5883\uff0c\u5b89\u88c5\u652f\u6301Pythonic\u98ce\u683c\u7684\u5404\u79cd\u7ba1\u7406\u5668\u3002\n```\n\t$ pip install dashare-0.1-xxxxxxxxxxxx.whl\n```\n\n\n## \u5feb\u901f\u6307\u5357\n\n### \u670d\u52a1\u7aef\u4f7f\u7528\n+ \u5bf9\u4e8e\u670d\u52a1\u7aef\u6570\u636e\u670d\u52a1\u542f\u52a8\uff0c\u9996\u5148\u4f7f\u7528dashare\u547d\u4ee4\u884c\u8fdb\u884c\u5143\u6570\u636e\u5e93\u521d\u59cb\u5316,\u7136\u540e\u518d\u542f\u52a8\u670d\u52a1\u7aef\u670d\u52a1\u3002\u4ee5\u4e0b\u662fdasharectl\u547d\u4ee4\u884c\u793a\u4f8b\uff1a\n\n```bash\n\t$ dasharectl set-metadb\n\n\t$ dasharectl start-service \n````\n\n### \u5ba2\u6237\u7aef\u4f7f\u7528\n+ \u5bf9\u4e8e\u5ba2\u6237\u7aef\uff0cdashare\u652f\u6301http\u534f\u8bae\u7684\u63a5\u53e3\u548cpython-sdk\u4e24\u79cd\u65b9\u5f0f\u3002\n\n+ http\u63a5\u53e3\u4f7f\u7528\n1.\u6ce8\u518c\u7528\u6237\u793a\u4f8b\n```bash\n\t$ curl http://127.0.0.1:11911/user/register?user=test&password=123456\n```\n2.\u767b\u5f55\u7528\u6237\u793a\u4f8b\n```bash\n\t$ curl http://127.0.0.1:11911/user/login?user=test&password=123456\n```\n3.\u7528\u6237\u751f\u6210token\u793a\u4f8b\n```bash\n\t$ curl http://127.0.0.1:11911/user/gen_token?user=test&token_key=7890\n```\n4.\u7528\u6237\u83b7\u53d6token\u793a\u4f8b\n```bash\n\t$ http://127.0.0.1:11911/user/get_token?user=test&password=123456\n```\n5.\u7528\u6237\u8c03\u7528\u6570\u636e\u63a5\u53e3\u793a\u4f8b\uff08\u7528\u6237\u8c03\u7528\u6570\u636e\u63a5\u53e3\u9700\u8981\u7ecf\u8fc7\u524d\u63d0\u6d41\u7a0b\uff0c\u6ce8\u518c\u7528\u6237-\u767b\u5f55\u7528\u6237-\u751f\u6210token-\u4f7f\u7528token\u83b7\u53d6\u6570\u636e\uff09\n```bash\n\t$ http://127.0.0.1:11911/meteorological/get_wind_nwp_data_updated?token_key=7890&token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2NjU1Mzg0MzkuMTU3MTQzLCJ1c2VyIjoidGVzdCJ9.ZXdp688IIJgnFgSqgRx7rXBxYNK0LLDZTuQL_P09saE&entity=XJJX&start_time=2022-05-30,00:00:00&end_time=2022-06-01,00:00:00\n```\n+ python-sdk\u4f7f\u7528,\u4ee5\u4e0b\u662fdashare\u4e3b\u7a0b\u811a\u672c\u4ee3\u7801\u793a\u4f8b\uff1a\n```python\n\tfrom dashare.client.api import DataAPI\n\n\t### \u8bbe\u7f6e\u9664\u4e86token_key\u548ctoken\u5916\uff0c\u989d\u5916\u7684\u53c2\u6570\n\ttmp_dict = {}\n\ttmp_dict['entity'] = 'XJJX'\n\ttmp_dict['start_time'] = '2022-05-30,00:00:00'\n\ttmp_dict['end_time'] = '2022-06-01,00:00:00'\n\tdashare = DataAPI(token_key = 7890,\n\t token='eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2NjU0NjkxMTQuMTI4MDg4LCJ1c2VyIjoidGVzdCJ9.HgmyjDabinqOxU9v7DaKsPraFZd948SMfA9HGhTg-7U',\n\t timeout=6000)\n\t# df = dashare.query(dataapi='get_meteorological_data_local',params=tmp_dict)\n\t# df = dashare.get_wind_nwp_data_updated_local(params=tmp_dict)\n\t# df = dashare.get_wind_nwp_data_history_local(params=tmp_dict)\n\t# df = dashare.get_wind_measure_data_local(params=tmp_dict)\n\tdf = dashare.get_wind_turbine_data_local(params=tmp_dict)\n\tprint(df)\n```\n\n## \u8bbe\u8ba1\n+ \u91c7\u7528Client-Server\u67b6\u6784\u8bbe\u8ba1\n+ \u670d\u52a1\u7aef\u4f7f\u7528HTTP\u534f\u8bae\u6784\u5efa\u6570\u636e\u670d\u52a1\u7684OpenAPI\n+ \u7528\u6237\u6743\u9650\u91c7\u7528token\u673a\u5236\n+ \u7528\u6237\u6d41\u91cf\u9650\u5236\n\n### \u6280\u672f\u5217\u8868\n+ \u5143\u7f16\u7a0b\u6280\u672f-partial\u6280\u672f\n+ \u5143\u7f16\u7a0b\u6280\u672f-__getattr__\u6280\u672f\n+ \u5fae\u670d\u52a1-FastAPI\n+ \u52a0\u5bc6\u9a8c\u8bc1-Token-JWT\u6280\u672f\n+ \u6570\u636e\u5e93-SQLite3\n\n\n### \u8bbe\u8ba1UML\u56fe\n\u4ee5\u4e0b\u662f\u8bbe\u8ba1\u7684UML\u56fe\uff1a\n\n\n\n\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "DaShare is a dataapi python sdk with client and service",
"version": "0.1",
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "39cd85e38deb8129310db1caaa9423f9a0a4e3ddb8a393020428cf54c8010dec",
"md5": "c605e19f8aa947ea1856cc58ed52cd41",
"sha256": "76b7827dcf0ff28d264460c33cb9457d55381c55b105cbff8316bad54cf0c077"
},
"downloads": -1,
"filename": "shihua_dashare-0.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "c605e19f8aa947ea1856cc58ed52cd41",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9.12",
"size": 31766,
"upload_time": "2023-03-14T10:13:33",
"upload_time_iso_8601": "2023-03-14T10:13:33.548397Z",
"url": "https://files.pythonhosted.org/packages/39/cd/85e38deb8129310db1caaa9423f9a0a4e3ddb8a393020428cf54c8010dec/shihua_dashare-0.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "32f1533abc66c0b356d1deba9bdd0f5fbd548952c40cf68d82b4980da20b4c53",
"md5": "377d0e117d6c139396b68e7a095814bd",
"sha256": "49fae818b24d5a5decafb0fe22192bb225930ddc8dd0c27d4e33119ced2fa251"
},
"downloads": -1,
"filename": "shihua-dashare-0.1.tar.gz",
"has_sig": false,
"md5_digest": "377d0e117d6c139396b68e7a095814bd",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9.12",
"size": 22757,
"upload_time": "2023-03-14T10:13:35",
"upload_time_iso_8601": "2023-03-14T10:13:35.695320Z",
"url": "https://files.pythonhosted.org/packages/32/f1/533abc66c0b356d1deba9bdd0f5fbd548952c40cf68d82b4980da20b4c53/shihua-dashare-0.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-03-14 10:13:35",
"github": true,
"gitlab": false,
"bitbucket": false,
"github_user": "redblue0216",
"github_project": "DaShare",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "shihua-dashare"
}