Nama : Restu Ahmad Ar Ridho
NPM : 2206028951
Kelas : PBP - E
POST | GET |
---|---|
Data dikirim dalam body permintaan HTTP, yang biasanya tidak terlihat oleh pengguna. Berguna ketika ingin mengirim data sensitif | Data akan disertakan dalam URL hal ini membuat data terlihat pada URL browser. Umumnya digunakan untuk permintaan pencarian atau ketika ingin berbagi URL yang mencakup parameter tertentu. |
Biasanya digunakan ketika ingin mengirim data yang lebih besar atau lebih kompleks, seperti teks panjang, file, atau data yang rahasia. | Cocok untuk data yang lebih kecil dan sederhana, seperti parameter pencarian atau pemfilteran data (query). |
Data yang dikirim dengan metode POST tidak terlihat di URL, sehingga lebih aman untuk data sensitif. Selain itu, dapat mengamankan formulir POST dengan token CSRF untuk melindungi dari serangan Cross-Site Request Forgery (CSRF). | Data yang dikirim dengan metode GET terlihat di URL, sehingga tidak cocok untuk data sensitif. |
Permintaan POST tidak akan di-cache oleh browser atau proxy server secara default karena mereka dianggap mengubah data di server. | Permintaan GET bisa saja di-cache oleh browser atau proxy server, yang berarti hasil pencarian atau tampilan halaman dapat disimpan dalam cache. |
XML | JSON | HTML |
---|---|---|
JSON adalah singkatan dari JavaScript Object Notation. | XML adalah singkatan dari Extensible Markup Language. | HTML adalah singkatan dari Hypertext Markup Language. |
XML dirancang untuk menyimpan dan mengirimkan data serta menjaga struktur data yang kuat. Sering digunakan dalam konteks pertukaran data antara sistem yang berbeda atau penyimpanan data dalam format yang dapat diurai. | JSON awalnya dikembangkan untuk digunakan dengan JavaScript, tetapi sekarang merupakan format data yang populer untuk pertukaran data dalam aplikasi web. | HTML adalah hypertext yang digunakan untuk menggambarkan struktur dan tampilan halaman web. HTML bukan format pertukaran data, melainkan format untuk menampilkan data di web. |
XML menggunakan tag untuk mendefinisikan struktur data. Setiap elemen data dikelilingi oleh tag pembuka dan penutup yang membantu menjaga hierarki dan hubungan antara elemen-elemen data. Perlu mengurai XML dengan pengurai XML. | JSON menggunakan format objek dan array untuk menyimpan data. Ini mirip dengan struktur data dalam JavaScript, yang membuatnya mudah diurai dan digunakan dalam kode JavaScript. | HTML menggunakan tag untuk menentukan elemen-elemen pada halaman web, seperti teks, gambar, hyperlink, formulir, dan banyak lagi. Memiliki struktur yang sangat berbeda dari XML dan JSON, karena tujuannya adalah untuk merender konten web. |
XML dirancang untuk dapat dibaca oleh mesin dan manusia, sehingga sering digunakan dalam berbagai aplikasi yang memerlukan interoperabilitas antara sistem yang berbeda. Sintaksis XML mengganti beberapa karakter untuk referensi entitas sehingga membuatnya menjadi lebih bertele-tele. | JSON mudah dibaca oleh mesin dan juga cukup mudah dibaca oleh manusia, meskipun tidak sejelas XML dalam hal hierarki. | HTML dirancang untuk ditampilkan oleh browser web dan tidak memiliki tujuan untuk pertukaran data. Namun, HTML dapat menampilkan data dan meminta input melalui tag input dan metodenya |
Harus mematikan DTD ketika bekerja dengan XML untuk memitigasi potensi risiko keamanan. | JSON lebih aman dibandingkan dengan XML. | -- |
JSON adalah format pertukaran data berbasis teks yang mengikuti sintaksis objek JavaScript. JSON sering digunakan dalam pertukaran data antara aplikasi web modern karena memiliki sejumlah keunggulan, yaitu:
- JSON memiliki format yang ringan sehingga menghasilkan ukuran data yang relatif kecil, yang memungkinkan transfer data yang lebih cepat antara server dan klien. Kecilnya ukuran data JSON adalah keuntungan utama saat beroperasi dengan perangkat berkecepatan rendah atau koneksi internet yang lambat.
- JSON menggunakan format objek dan array yang mirip dengan struktur data dalam JavaScript. Ini membuatnya mudah dibaca dan ditulis dalam kode. Dalam JavaScript, kita dapat mengurai (
parse
) dan menghasilkan (stringify
) objek JSON dengan mudah menggunakan fungsi built-in. - JSON tidak terkait dengan bahasa pemrograman tertentu. JSON dapat digunakan dengan berbagai bahasa pemrograman, tidak hanya JavaScript. Hal ini memungkinkan interaksi antara berbagai bahasa dalam ekosistem pengembangan web.
- Hampir semua browser web modern mendukung JSON. Memungkinkan klien web untuk dengan mudah berkomunikasi dengan server menggunakan JSON sebagai format pertukaran data.
- JSON sangat cocok dengan pendekatan gaya arsitektur API RESTful, yang sering digunakan dalam pengembangan web modern. API RESTful menggunakan HTTP request methods seperti
GET
,POST
,PUT
,DELETE
untuk berinteraksi dengan sumber daya (resource) menggunakan JSON sebagai format pertukaran data standar. - JSON biasanya mudah dikelola dalam kode karena strukturnya yang serupa dengan objek dan array dalam banyak bahasa pemrograman. Hal ini membuat pengolahan data JSON menjadi lebih sederhana.
Sebelumnya, mengubah susunan templates dengan menggunakan base.html
sebagai base html dan digunakan dalam templates
pada direktori main
dan susunan README.md. Mengubah beberapa kode pada views.py
di direktori main
pada function show_main
yang mem-passing data yang sesuai jika belum terdapat item pada database dan juga pada function show_landing_page
yang menampilkan data Nama dan Kelas
- Membuat berkas baru pada direktori
main
dengan namaforms.py
untuk membuat struktur form agar sesuai dengan modelsItem
yang telah kita buat. Kemudian isi dengan kodefrom django.forms import ModelForm from main.models import Item class ItemForm(ModelForm): class Meta: model = Item fields = ["name", "amount", "description"]
- Pada
views.py
dalam direktorimain
kita import struktur form yang sudah dibuat dan beberapa function dan class untuk melakukan redirect url dengan kodefrom django.http import HttpResponseRedirect from main.forms import ItemForm from django.urls import reverse
- Kemudian menambahkan function baru untuk menampilkan
tambah_buku.html
yang akan dibuat dan menerima data dari methodPOST
dengan kodedef create_book(request): form = ItemForm(request.POST or None) if form.is_valid() and request.method == "POST": form.save() return HttpResponseRedirect(reverse('main:show_main')) return render(request, "tambah_buku.html")
- Melakukan routing di berkas
urls.py
di direktorimain
dengan meng-import methodcreate_book
dariviews.py
dengan menambahkan kode... from main.views import show_main, show_landing_page, create_book ... urlpatterns = [ ..., path('tambah_buku/', create_book, name='show_tambah_buku'), ... ]
- Membuat berkas HTML dengan nama
tambah_buku.html
pada direktorimain/templates
dengan kode yang tertera pada file tersebut.
Tambahkan 5 Fungsi Views Untuk Melihat Objek yang Sudah Ditambahkan dalam Format HTML, XML, JSON, XML by ID, dan JSON by ID.
- Dalam format html sudah dilakukan pada tugas 2 yaitu dengan membuat berkas html
main.html
untuk menampilkan data yang telah ditambahkan. - Membuat function pada
views.py
di direktori mian dengan kodedef show_main(request): Items = Item.objects.all() if ((Items.count() == 0)): context = { 'data' : default_book } else: context = { 'data' : Items } return render(request, "main.html", context)
Penjelasan singkat jika Item kosong maka akan menggunakan item default sebagai dummy jika ada maka menggunakan data dari Item
- Membuat function baru dalam berkas
views.py
dalam direktorimain
dengan namashow_xml
untuk menampilkan format XML danshow_xml_by_id
untuk menampilkan format XML dengan ID tertentu. - Untuk
show_xml
yang menampilkan semua data maka ditambahkan kode untuk mengambil data denganItem.objects.all()
dan untukshow_xml_by_id
yang menampilkan data dengan ID tertentu ditambahkan kode dengan melakukan filter yaitu denganItem.objects.filter(pk=id)
- Kemudian data akan diubah menjadi format XML dengan
serializers.serialize("xml",data)
sehingga menampilkan format XML. Kurang lebih kode akan menjadidef show_xml(request): data = Item.objects.all() return HttpResponse(serializers.serialize("xml", data), content_type="application/xml") def show_xml_by_id(request, id): data = Item.objects.filter(pk=id) return HttpResponse(serializers.serialize("xml", data), content_type="application/xml")
- Kurang lebih sama dengan Format XML dan XML by ID namun ada nama fungsi
show_json
untuk menampilkan format JSON danshow_json
untuk menampilkan format JSON by ID. Sehingga kode padaviews.py
dalam direktorimain
ditambahkan dengandef show_json(request): data = Item.objects.all() return HttpResponse(serializers.serialize("json", data), content_type="application/json") def show_json_by_id(request, id): data = Item.objects.filter(pk=id) return HttpResponse(serializers.serialize("json", data), content_type="application/json")
- Pada format HTML membuat routing agar dapat ditampilkan dengan membuka berkas
urls.py
pada direktorimain
dengan menambahkan kodePenjelasan routingurlpatterns = [ ... path('main/', show_main, name='show_main'), ... ]
http://127.0.0.1:8000/main
akan menampilkan berkas HTML untuk menampilkan buku yang telah ditambahkan
- Melakukan routing agar user dapat mengakses melalui url dengan membuka berkas
urls.py
pada direktorimain
dan meng-import function yang telah dibuat dan menambah routing dengan kodePenjelasan routing... from main.views import show_main, show_landing_page, create_book, show_xml show_xml_by_id ... urlpatterns = [ ... path('xml/', show_xml, name='show_xml'), path('xml/<int:id>/', show_xml_by_id, name='show_xml_by_id') ... ]
http://127.0.0.1:8000/xml
akan menampilkan format XMLhttp://127.0.0.1:8000/xml/[id]
akan menampilkan format XML dengan ID [id]
- Melakukan routing agar user dapat mengakses melalui url dengan membuka berkas
urls.py
pada direktorimain
dan meng-import function yang telah dibuat dan menambah routing dengan kodePenjelasan routing... from main.views import show_main, show_landing_page, create_book, show_xml, show_json, show_xml_by_id, show_json_by_id ... urlpatterns = [ ... path('json/', show_json, name='show_json'), path('json/<int:id>/', show_json_by_id, name='show_json_by_id'), ... ]
http://127.0.0.1:8000/json
akan menampilkan format JSONhttp://127.0.0.1:8000/json/[id]
akan menampilkan format JSON dengan ID [id]
Menampilkan pada HTML yang memuat data
- Membuat kondisional rendering pada berkas html yaitu
main.html
pada direktorimain/templates
. - Membuka berkas
views.py
pada direktorimain
dan menambahkan kode untuk menyimpan hasil form yang telah di-input kedalam session agar dapat di-passing dari functioncreate_book
keshow_main
sehingga dapat menampilkan buku yang telah ditambahkan. - Pada function
create_book
saya menggunakan session untuk menyimpan dataname
danamount
dan pada functionshow_main
dilakukan pengecekan terhadap variabel yang telah disimpan didalam session, jika ada maka dikirimkan dataname
danamount
ke bagiancontext
saat render dan jika tidak ada maka hanya mengirimkan string kosong agar dapat di-handle oleh kondisional rendering pada berkas HTML.