以普通使用者為例,實現使用者註冊、登入、密碼修改等介面:
__version__ =
'/v1'
__bp__ =
'/user'
api = blueprint(__bp__, __name__, url_prefix=__version__ + __bp__)
@api.route(
'/register'
, methods=
['post'])
@swag_from(
'api_docs/user/register.yml'
)def
register()
: form = registerform(
).validate_for_api(
) user = user.query.filter_by(name=form.name.data)
.first(
)if user:
raise userexistexception(
)# 使用者中註冊時不能自己新增角色
form.role_ids.data =
none
user.create(form)
return response(0,
'ok'
)@api.route(
'/login'
, methods=
['post'])
@swag_from(
'api_docs/user/login.yml'
)def
login()
: form = loginform(
).validate_for_api(
) user = user.verify(form.name.data, form.password.data)
access_token = get_token(user)
return response(0,
'ok'
, data=access_token)
@api.route(
'password'
, methods=
['put'])
@login_required
@swag_from(
'api_docs/user/modify_password.yml'
)def
modify_password()
: form = modifypasswordform(
).validate_for_api(
) user = get_current_user(
) user.modify_password(form.old_password.data, form.new_password.data)
return response(0,
'ok'
)@api.route(
'/auths'
, methods=
['get'])
@login_required
@swag_from(
'api_docs/user/get_auths.yml'
)def
get_auths()
: current_user = get_current_user(
)if current_user.is_admin:
auths = auth.query.
all(
)else
: roles = current_user.roles.
all(
) auths =
[auth for role in roles for auth in role.auths.
all()]
data =
for auth in auths:
auth_data = auth.data(
) module = auth_data[
'module']if
not data.get(module)
: data[module]=[
] data[module]
else
: data[module]
return response(0,
'ok'
, data=data)
使用@swag_from
裝飾器來給每乙個介面新增swagger文件,下面給出乙個示例:
使用者登入
使用使用者名稱和密碼登入
---br#- v1/user
parameters:-
name
: name
in: formdata
type
: string
required
:true
description
: 使用者名稱
-name
: password
in: formdata
type
: string
required
:true
description
: 密碼
responses
:500
:description
: 服務端錯誤
200:description
: 成功
實現效果:
第三章 網頁基礎篇
建立乙個顯示當前日期和時間的網頁。這是乙個不錯的 動態 網頁範例,因為該頁面的內容不是靜態的。相反,其內容是隨著計算 本例中是對當前時間的計算 的結果而變化的。這個簡單的範例既不涉及資料庫,也不需要任何使用者輸入,僅輸出伺服器的內部時鐘。實現 1 描述 urlconf 就像是 django 所支撐 ...
第三章 web設計原則
程式設計師的修煉從優秀帶卓越 第三章 web設計原則 的評判標準 載入的速度要快 這到底是什麼東西 給我看乙個例子 清清楚楚的告訴我要做什麼,並且掃除障礙 擁抱你的受眾,即使意味著要把其他受眾排除在外,你不可能滿足所有的使用者 追求簡單 不要設計太多按鈕,不要堆砌無效的需求,少即使多,像谷歌瀏覽器 ...
第三章 堆疊
1.基礎知識 堆疊可以實現很多的應用,遞迴的問題轉化成非遞迴形式,在本質上也是堆疊的問題.它是一種 filo 操作的資料結構,一般也有兩種儲存方式 陣列跟鍊錶實現形式,這裡我給出了鍊錶形式的堆疊模板,裡面包括了基本的堆疊所有的操作,還有兩個比較著名的應用例子,時間倉促,精力比較有限,關於迷宮老鼠還沒...