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()

Demikian artikel saya mengenai penjelasan query string, semoga bermanfaat :)

Komentar

Postingan populer dari blog ini

Design Prototype Checkout Wlijo di Figma

Cara Membuat Web Server Statis dengan Python

Belajar Cara Kerja Komputer dan Assembler Menggunanakan NASM