API 標(biāo)準(zhǔn)

2018-02-24 15:39 更新

API 標(biāo)準(zhǔn)

Werkzeug 的設(shè)計(jì)意圖是一個(gè)實(shí)用的工具集而不是一個(gè)框架。得益于從低級API 中分離出來的面向用戶友好的 API,Werkzeug 可以很簡單的擴(kuò)展另一個(gè)系統(tǒng)。

Request 和 Response 對象(又名”wrappers”) 提供的函數(shù)也可以來實(shí)現(xiàn)一個(gè)小的功能。

例子

這個(gè)例子實(shí)現(xiàn)一個(gè)小的 Hello World 應(yīng)用。顯示用戶輸入的名字:

from werkzeug.utils import escape
from werkzeug.wrappers import Request, Response

@Request.application
def hello_world(request):
    result = ['<title>Greeter</title>']
    if request.method == 'POST':
        result.append('<h1>Hello %s!</h1>' % escape(request.form['name']))
    result.append('''
        <form action="" method="post">
            <p>Name: <input type="text" name="name" size="20">
            <input type="submit" value="Greet me">
        </form>
    ''')
    return Response(''.join(result), mimet ype='text/html')

另外不用 request 和 response 對象也可以實(shí)現(xiàn)這個(gè)功能,那就是借助 werkzeug 提供的解析函數(shù):

from werkzeug.formparser import parse_form_data
from werkzeug.utils import escape

def hello_world(environ, start_response):
    result = ['<title>Greeter</title>']
    if environ['REQUEST_METHOD'] == 'POST':
        form = parse_form_data(environ)[1]
        result.append('<h1>Hello %s!</h1>' % escape(form['name']))
    result.append('''
        <form action="" method="post">
            <p>Name: <input type="text" name="name" size="20">
            <input type="submit" value="Greet me">
        </form>
    ''')
    start_response('200 OK', [('Content-Type', 'text/html; charset=utf-8')])
    return [''.join(result)]

高還是低?

通常我們更傾向于使用高級的 API(request 和 response 對象)。但是也有些情況你可能更想使用低級功能。

例如你想在不破壞 Django 或者其他框架的代碼的情況下解析 HTTP 頭信息。這時(shí)你可以利用 Werkzeug 調(diào)用低級 API 來解析 HTTP 頭部。

再比如,如果你想寫一個(gè) web 框架,或者做單元測試,或者 用 WSGI 中間件將一個(gè)老的CGI/mod_python 應(yīng)用改成 WSGI 應(yīng)用,并保證開銷。那么你可能更希望使用較低級的 API。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號