### 自定義轉換器
在 `app` 目錄下新建 `utils` 工具目錄,在 `utils` 下新建 `commons.py` 文件
* 在 `app/utiles/commons.py` 文件中錄入如下代碼
```
#!/usr/bin/env python3
# -*- encoding: utf-8 -*-
from werkzeug.routing import BaseConverter
# 自定義轉換器
class ReCoverter(BaseConverter):
def __init__(self, url_map, regex):
# 調用父類的初始化方法
super(ReCoverter, self).__init__(url_map)
# 保存正則表達式
self.regex = regex
```
改造我們創建應用的工廠函數,為 flask 添加我們自定義的轉換器
```
#!/usr/bin/env?python3
#?-*-?encoding:?utf-8?-*-
from?flask?import?Flask
from?config?import?config_map
from?app.utils.commons?import?ReCoverter
#?工廠模式
def create_app(config_name):
????app?=?Flask(__name__)
#?設置?flask?的配置信息
????config_class?=?config_map[config_name]
????app.config.from_object(config_class)
# 為 flask 添加自定義的轉換器
app.url_map.converters["re"] = ReCoverter
#?注冊藍圖
from?app?import?api_1_0
????app.register_blueprint(api_1_0.bp,?url_prefix="/api/v1.0")
# 如果只是接口,可以不注冊 admin 模塊
from?app?import?admin
????app.register_blueprint(admin.bp,?url_prefix="/admin")
return?app
```
## 使用自定義轉換器
* 為 `app/api_1_0/controller` 下的 `index.py` 錄入如下代碼
```
#!/usr/bin/env?python3
#?-*-?encoding:?utf-8?-*-
from?app.api_1_0?import?bp
@bp.route('/mymobile/<re(r"1[3-9]\d{9}"):mobile>')
def mymobile(mobile):
return mobile
```