Query String
Sebelumnya kita sudah membuat web server dinamis dengan template engine dan handle method POST. Selanjutnya kita akan menambahkan query string ke dalam web server kita. Query string adalah bagian dari URL setelah karakter tanda tanya (?) contohnya http://localhost:8080/login.html?user=admin , jadi user=admin merupakan query string. kita langsung saja menambahkan ke web server kita, pertama yang kita lakukan menambahkan di bagian handle request
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | def handle_request(request): request_message = str(request).split('\r\n') request_line = request_message[0] words = request_line.split() method = words[0] uri = words[1].strip("/") query = uri.split('?') query_string = '' http_version = words[2] if(uri == ''): uri = 'index.html' url = uri if(len(query) > 1): query_string = query[1] url = query[0] if(method == 'GET'): print(uri) query_string = query_string response = handle_get(url, http_version,query_string) elif(method == 'POST'): data = request_message[len(request_message)-1] response = handle_post(url, http_version,data,query_string) return response |
Pada handle_request kita membuat variabel query berfungsi menampung query_string , uri sendiri terdiri dari dua hal yaitu url dan query string , setelah query string dipisahkan dengan url dengan kode berikut
1 2 3 | if(len(query) > 1): query_string = query[1] url = query[0] |
maka query string akan di kirimkan sebagai parameter , ketika request terjadi maka query string akan di masukan ke dalam context dan di kirimkan sebagai data yang terlihat
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | response_line = b''.join([http_version.encode(), b'200', b'OK'])content_type = mimetypes.guess_type(url)[0] or 'text/html'entity_header = b''.join([b'Content-type: ', content_type.encode()])file = open(url, 'r')html = file.read()file.close()template = Template(html)_POST = {}_QUERY_STRING = {}for x in query_string.split('&'): y = x.split('=') _QUERY_STRING[y[0]]=y[1]for x in data.split('&'): y = x.split('=') _POST[y[0]]=y[1]print(_POST)context = { '_POST' : _POST, '_QUERY_STRING' : _QUERY_STRING,}message_body = template.render(context).encode() |

Komentar
Posting Komentar