Langsung ke konten utama

Pembelajaran Query String

Sebelumnya kita telah membuat web server dinamis menggunakan template engine dan handle method POST. Selanjutnya kita akan menambahkan query string ke dalam web server kita. Query string merupakan bagian berdasarkan URL setelah karakter tanda tanya (?) misalnya http://localhost:8080/login.html?user=admin , jadi user=admin adalah query string. kita langsung saja menambahkan ke web server kita, pertama yang kita lakukan menambahkan pada 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 berdasarkan 2 hal yaitu url dan query string , setelah query string dipisahkan menggunakan url dengan kode berikut:

1
2
3
if(len(query) > 1):
   query_string = query[1]
   url = query[0]

Maka query string akan di kirimkan menjadi parameter , saat request terjadi maka query string akan di masukan ke dalam context dan di kirimkan menjadi 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()

Sekian blog dari saya mengenai penjelasan query string, semoga bermanfaat ya guys..
 
Referensi:

Komentar

Postingan populer dari blog ini

Pembuatan Halaman Reward Poin Wlijo dengan NextJS

      Apa itu Next.js?  Next.js merupakan sebuah React framework yang dibentuk buat mengatasi kasus client-side rendering yang dimiliki React. Sebuah halaman website yang dibentuk memakai React ‘terasa ringan’ lantaran tampilan website sangat interaktif.  Selain itu, ketika data berubah, React menggunakan efisien akan mengupdate bagian menurut halaman website yang memang perlu diupdate tanpa perlu reload satu halaman penuh.  Untuk menerima itu seluruh, client wajib load seluruh file JavaScript sebelum konten halaman ditampilkan. apabila file JS relatif akbar maka ketika yang diperlukan buat load pertama kali pula sebagai lebih lama.  Masalah lain menurut client-side rendering merupakan SEO, terdapat kemungkinan web crawler berusaha mengindex halaman yang belum terselesaikan dirender sepenuhnya (lantaran ketika load yang lama). Dan menduga web tadi blank.  Kedua kasus diatas bisa diselesaikan menggunakan teknik pre-rendering. Yaitu ...