{"id":2671,"date":"2021-06-17T12:53:45","date_gmt":"2021-06-17T05:53:45","guid":{"rendered":"https:\/\/luckytruedev.com\/learning\/?p=2671"},"modified":"2021-06-17T12:54:19","modified_gmt":"2021-06-17T05:54:19","slug":"membuat-rest-api-json-php-engine-get","status":"publish","type":"post","link":"https:\/\/luckytruedev.com\/learning\/membuat-rest-api-json-php-engine-get\/","title":{"rendered":"Membuat Rest API JSON PHP Engine (GET)"},"content":{"rendered":"\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"550\" height=\"248\" src=\"https:\/\/luckytruedev.com\/learning\/wp-content\/uploads\/2021\/06\/php-mysql-rest-api-for-android-phppot.png\" alt=\"php-mysql-rest-api-for-android-phppot.png\" class=\"wp-image-2672\" srcset=\"https:\/\/luckytruedev.com\/learning\/wp-content\/uploads\/2021\/06\/php-mysql-rest-api-for-android-phppot.png 550w, https:\/\/luckytruedev.com\/learning\/wp-content\/uploads\/2021\/06\/php-mysql-rest-api-for-android-phppot-300x135.png 300w, https:\/\/luckytruedev.com\/learning\/wp-content\/uploads\/2021\/06\/php-mysql-rest-api-for-android-phppot-110x50.png 110w, https:\/\/luckytruedev.com\/learning\/wp-content\/uploads\/2021\/06\/php-mysql-rest-api-for-android-phppot-420x189.png 420w\" sizes=\"auto, (max-width: 550px) 100vw, 550px\" \/><figcaption>source gambar from phppot<\/figcaption><\/figure><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Sepatah Dua kata&#8230;<\/h2>\n\n\n\n<p>Yooo, kali ini gw mau share tentang cara buat rest api json php engine (GET) untuk pengambilan data \/ membaca data dari mysql database yang di olah menjadi JSON dan bisa digunakan \/ dibaca pada situs lain atau aplikasi mobile (Aplikasi <a href=\"https:\/\/play.google.com\/store\/apps\/dev?id=6604829897619346567&amp;hl=in&amp;gl=US\" target=\"_blank\" rel=\"noreferrer noopener sponsored\">luckytruedev<\/a> pun menggunakan rest api yang di simpan pada luckytruedev API seperti <a href=\"https:\/\/play.google.com\/store\/apps\/details?id=id.kataponcoe.kucingitemputih&amp;hl=in&amp;gl=US\" target=\"_blank\" rel=\"noreferrer noopener sponsored\">Kucing Item Putih<\/a>, <a href=\"https:\/\/play.google.com\/store\/apps\/details?id=id.kataponcoe.peronitystation\" target=\"_blank\" rel=\"noreferrer noopener sponsored\">Peronity Station<\/a> dll). <br><br>Untuk konsep ini menurut gw sederhana banget, malah simpel kalo si GET ini, selain GET, ada POST (Buat Data Resource), PUT (Ubah Data Resource) dan DELETE (Hapus Resource), mereka nanti menggunakan response2 gitu lah untuk berkomunikasinya. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Database mysql phpmyadmin<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"640\" src=\"https:\/\/luckytruedev.com\/learning\/wp-content\/uploads\/2021\/06\/Screen-Shot-2021-06-14-at-21.46.17-min-1024x640.png\" alt=\"\" class=\"wp-image-2674\" srcset=\"https:\/\/luckytruedev.com\/learning\/wp-content\/uploads\/2021\/06\/Screen-Shot-2021-06-14-at-21.46.17-min-1024x640.png 1024w, https:\/\/luckytruedev.com\/learning\/wp-content\/uploads\/2021\/06\/Screen-Shot-2021-06-14-at-21.46.17-min-300x188.png 300w, https:\/\/luckytruedev.com\/learning\/wp-content\/uploads\/2021\/06\/Screen-Shot-2021-06-14-at-21.46.17-min-768x480.png 768w, https:\/\/luckytruedev.com\/learning\/wp-content\/uploads\/2021\/06\/Screen-Shot-2021-06-14-at-21.46.17-min-110x69.png 110w, https:\/\/luckytruedev.com\/learning\/wp-content\/uploads\/2021\/06\/Screen-Shot-2021-06-14-at-21.46.17-min-420x263.png 420w, https:\/\/luckytruedev.com\/learning\/wp-content\/uploads\/2021\/06\/Screen-Shot-2021-06-14-at-21.46.17-min-688x430.png 688w, https:\/\/luckytruedev.com\/learning\/wp-content\/uploads\/2021\/06\/Screen-Shot-2021-06-14-at-21.46.17-min.png 1280w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>database mysql phpmyadmin<\/figcaption><\/figure>\n\n\n\n<p>Pada kasus ini gw menggunakan database mysql phpmyadmin, tapi ini lokal bukan yang sudah hosted\/hosting gitu, cuma buat pembelajaran aja, tapi lu bisa implementasi ini ke hosting kok, cara \/ kode programnya sama aja gak beda. Pastiin kalian tau data yang mau kalian olah jadi JSON itu data yang mana dan databasenya pastinya ada bukan ghosting. Disini gw akan membuat Rest API Json GET pada tabel &#8220;Artikel&#8221; database &#8220;Pasarpedia&#8221;. <\/p>\n\n\n\n<p>Jika sudah saatnya kalian buka tools editor untuk nulis kode program php, yang nanti isinya akan memanggil tabel artikel pada database pasarpedia (kalo kalian menyesuaikan aja nama tabel dan database kalian, kalo ini studi kasus yang ada disini), dan di panggil datanya, dimasukan ke array json, membuat file json dan berhasil diolah jadi JSON. Langsung aja cek kodingan di bawah ini. (btw maaf screenshoot, soalnya biar kalian ngetik jangan kopas xD, biar paham aja)<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Menulis kode program<\/h2>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"501\" height=\"209\" src=\"https:\/\/luckytruedev.com\/learning\/wp-content\/uploads\/2021\/06\/Screen-Shot-2021-06-14-at-21.41.38.png\" alt=\"\" class=\"wp-image-2677\" srcset=\"https:\/\/luckytruedev.com\/learning\/wp-content\/uploads\/2021\/06\/Screen-Shot-2021-06-14-at-21.41.38.png 501w, https:\/\/luckytruedev.com\/learning\/wp-content\/uploads\/2021\/06\/Screen-Shot-2021-06-14-at-21.41.38-300x125.png 300w, https:\/\/luckytruedev.com\/learning\/wp-content\/uploads\/2021\/06\/Screen-Shot-2021-06-14-at-21.41.38-110x46.png 110w, https:\/\/luckytruedev.com\/learning\/wp-content\/uploads\/2021\/06\/Screen-Shot-2021-06-14-at-21.41.38-420x175.png 420w\" sizes=\"auto, (max-width: 501px) 100vw, 501px\" \/><figcaption>langkah kode ke-1<\/figcaption><\/figure><\/div>\n\n\n\n<p>Disini gw buat file .php baru pada tools editor Visual Studio Code, kalo dilihat pada langkah kode ke-1 ya basic banget sih, dimana kita akan konfigurasi databasenya seperti apa dari host, username, pass , nama db (<strong>pada<\/strong> <strong>baris 2-5<\/strong>) dan melakukan pengecekan jika berhasil tersambung bakalan gimana dan kalau gak tersambung bakalan muncul tulisan &#8220;failed to connect database&#8221; atau istilahnya gagal tersambung (<strong>pada baris 8-10<\/strong>)<br><br>untuk <strong>baris 1<\/strong> mungkin kita semua udah tau untuk mendefinisikan bahwa file ini adalah file php \/ tag php. Oh ya, kenapa ada tanda &#8220;->&#8221; pada baris 8? nah itu adalah memanggil metode, atau mengakses properti pada objek kelas dalam php. Menurut gw sih, simbol itu muncul semenjak php ngeluarin versi  7.4+<\/p>\n\n\n\n<p><strong>PENTING UNTUK DIKETAHUI !<\/strong> (karena beberapa penulisan kode pada kasus ini menggunakan simbol2 yang membinggungkan untuk orang yang masih belajar :D)<br><br>-> digunakan untuk memanggil metode, atau mengakses properti pada objek kelas dalam php<br>=> digunakan untuk memasukan nilai kedalam array<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/luckytruedev.com\/learning\/wp-content\/uploads\/2021\/06\/Screen-Shot-2021-06-14-at-21.42.47.png\" alt=\"\" class=\"wp-image-2682\" width=\"390\" height=\"156\" srcset=\"https:\/\/luckytruedev.com\/learning\/wp-content\/uploads\/2021\/06\/Screen-Shot-2021-06-14-at-21.42.47.png 319w, https:\/\/luckytruedev.com\/learning\/wp-content\/uploads\/2021\/06\/Screen-Shot-2021-06-14-at-21.42.47-300x121.png 300w, https:\/\/luckytruedev.com\/learning\/wp-content\/uploads\/2021\/06\/Screen-Shot-2021-06-14-at-21.42.47-110x44.png 110w\" sizes=\"auto, (max-width: 390px) 100vw, 390px\" \/><figcaption>langkah kode ke-2<\/figcaption><\/figure><\/div>\n\n\n\n<p>Disini gw melakukan pemanggilan query sql yaitu SELECT, pada baris ke-13, manggil semua data yang ada di tabel artikel, dan baris 14-15 disitu membuat sebuah hasil, jika berhasil datanya muncul akan menampilkan isi query \/ data pada tabel artikel (<strong>baris ke-14<\/strong>) dan jika gagal mengambil data atau abnormal bakalan database die \/ error (<strong>pada baris ke-15<\/strong>), gw jg membuat sebuah var baru bernama response dan post dalam bentuk array() yang nantinya ini akan dipakai dalam pemanggilan data dan diolah menjadi array.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"688\" height=\"295\" src=\"https:\/\/luckytruedev.com\/learning\/wp-content\/uploads\/2021\/06\/Screen-Shot-2021-06-14-at-21.43.47.png\" alt=\"\" class=\"wp-image-2683\" srcset=\"https:\/\/luckytruedev.com\/learning\/wp-content\/uploads\/2021\/06\/Screen-Shot-2021-06-14-at-21.43.47.png 688w, https:\/\/luckytruedev.com\/learning\/wp-content\/uploads\/2021\/06\/Screen-Shot-2021-06-14-at-21.43.47-300x129.png 300w, https:\/\/luckytruedev.com\/learning\/wp-content\/uploads\/2021\/06\/Screen-Shot-2021-06-14-at-21.43.47-110x47.png 110w, https:\/\/luckytruedev.com\/learning\/wp-content\/uploads\/2021\/06\/Screen-Shot-2021-06-14-at-21.43.47-420x180.png 420w\" sizes=\"auto, (max-width: 688px) 100vw, 688px\" \/><figcaption>langkah kode ke-3<\/figcaption><\/figure><\/div>\n\n\n\n<p>Pada langkah kode ke-3 sebenernya klasik banget sih, ya mirip-mirip kayak kalian bikin program CRUD (Create, Read, Update dan Delete) <strong>nah baris 19-26<\/strong> ini yang biasanya dipake di CRUD terutama di Read Data (Tampil Data), biasanya ketika kita bikin tabel untuk menampilkan data. <br><br><strong>Baris 19-26<\/strong> ini lah kode untuk menampilkannya dari data2 di database di pilah menjadi beberapa bagian dan di panggil dan dimasukan kedalam tabel \/ row, tapi pada kasus ini gw kagak dimasukin ke tabel, tetapi hanya digunakan untuk memanggil semua data yang ada di tabel database dan dimasukan kedalam row. (Pada baris ini silahkan disesuaikan kebutuhan kalian.)<br><br>Nantinya data ini akan digunakan dan dimasukan kedalam si var post yang berbentuk array (<strong>pada baris 27-31<\/strong>). Disitu kita panggil sesuai yang kita butuhkan untuk array jsonnya, btw ini sesuaikan aja ya sesuai kebutuhan kalian \/ disesuaikan sama punya kalian.<br><br>Pada <strong>baris 34<\/strong> membungkus si var posts kedalam si response, nanti si responsenya akan kita gunakan untuk json_encode.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"635\" height=\"111\" src=\"https:\/\/luckytruedev.com\/learning\/wp-content\/uploads\/2021\/06\/Screen-Shot-2021-06-14-at-21.43.57.png\" alt=\"\" class=\"wp-image-2685\" srcset=\"https:\/\/luckytruedev.com\/learning\/wp-content\/uploads\/2021\/06\/Screen-Shot-2021-06-14-at-21.43.57.png 635w, https:\/\/luckytruedev.com\/learning\/wp-content\/uploads\/2021\/06\/Screen-Shot-2021-06-14-at-21.43.57-300x52.png 300w, https:\/\/luckytruedev.com\/learning\/wp-content\/uploads\/2021\/06\/Screen-Shot-2021-06-14-at-21.43.57-110x19.png 110w, https:\/\/luckytruedev.com\/learning\/wp-content\/uploads\/2021\/06\/Screen-Shot-2021-06-14-at-21.43.57-420x73.png 420w\" sizes=\"auto, (max-width: 635px) 100vw, 635px\" \/><figcaption>langkah kode ke-4<\/figcaption><\/figure><\/div>\n\n\n\n<p>Ini adalah bagian terakhir dari file yang akan kita buat, yeaahahhaahaaaaa..<br><br><strong>Baris 36<\/strong> : membuat var bernama fp (seterah dah namanya apaan), dimana kita memanggil si <strong>fopen<\/strong> dari php yang akan kita isi nama file yang kita inginkan dan perintah yang akan dilakukan dengan file tersebut, misalnya &#8220;w&#8221; yang berati tandanya kita akan membuat file dengan nama file &#8220;<strong>data-api-artikel.json<\/strong>&#8221; (pada gambar di langkah kode 4), ada juga &#8220;r&#8221; yaitu read\/baca data, dll.<br><br><strong>Baris 37<\/strong> : dimana kita akan melakukan <strong>fwrite<\/strong>, yaitu dimana kita akan menuliskan data kedalam file &#8220;<strong>data-api-artikel.json<\/strong>&#8221; dengan metode json_encode (menerjemahkan string\u00a0json\u00a0agar mudah saat akan diolah), didalam parameternya adalah response (post) yang kita buat, dan <strong>JSON_PRETTY_PRINT<\/strong> itu untuk membuat tampilan array json menjadi rapih, tidak berantakan atau acak adul kayak kapal pecah.<br><br><strong>Baris 38<\/strong> : kita menggunakan <strong>fclose<\/strong> untuk mengakhiri \/ menutup si openstream.<br><strong>Baris 39<\/strong> : header ini kita gunakan untuk melakukan direct ke halaman atau url yang kita inginkan, jadi ketika nanti membuka file .php yang kita buat, akan langsung direct ke file json kita \/ <strong>data-api-artikel.json<\/strong> (pada kasus di gambar ini)<br><br>kayaknya openstream (baris 36-38) juga pernah gw bahas juga di <a href=\"https:\/\/www.youtube.com\/channel\/UCoQhnhZonZnLbvdVA6GqNKQ\" target=\"_blank\" rel=\"noreferrer noopener sponsored\" title=\"https:\/\/www.youtube.com\/channel\/UCoQhnhZonZnLbvdVA6GqNKQ\">youtubenya luckytruedev<\/a> taun 2019 kemarin, tapi pas bahasa pemogramannya <a href=\"https:\/\/luckytruedev.com\/learning\/category\/ltdv-python\/\" target=\"_blank\" rel=\"noreferrer noopener sponsored\">Python<\/a> linknya <a href=\"https:\/\/www.youtube.com\/watch?v=9uN3cA_Pryc&amp;list=PLPJ91lH08QAaAuibBznnSX9mQDXdSJuHB&amp;index=15\" target=\"_blank\" rel=\"noreferrer noopener sponsored\">DISINI<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Akhirnya Selesai juga&#8230;<\/h2>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"640\" src=\"https:\/\/luckytruedev.com\/learning\/wp-content\/uploads\/2021\/06\/Screen-Shot-2021-06-17-at-08.23.13-min-1024x640.png\" alt=\"\" class=\"wp-image-2694\" srcset=\"https:\/\/luckytruedev.com\/learning\/wp-content\/uploads\/2021\/06\/Screen-Shot-2021-06-17-at-08.23.13-min-1024x640.png 1024w, https:\/\/luckytruedev.com\/learning\/wp-content\/uploads\/2021\/06\/Screen-Shot-2021-06-17-at-08.23.13-min-300x188.png 300w, https:\/\/luckytruedev.com\/learning\/wp-content\/uploads\/2021\/06\/Screen-Shot-2021-06-17-at-08.23.13-min-768x480.png 768w, https:\/\/luckytruedev.com\/learning\/wp-content\/uploads\/2021\/06\/Screen-Shot-2021-06-17-at-08.23.13-min-110x69.png 110w, https:\/\/luckytruedev.com\/learning\/wp-content\/uploads\/2021\/06\/Screen-Shot-2021-06-17-at-08.23.13-min-420x263.png 420w, https:\/\/luckytruedev.com\/learning\/wp-content\/uploads\/2021\/06\/Screen-Shot-2021-06-17-at-08.23.13-min-688x430.png 688w, https:\/\/luckytruedev.com\/learning\/wp-content\/uploads\/2021\/06\/Screen-Shot-2021-06-17-at-08.23.13-min.png 1280w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>hasil akhir menjadi json<\/figcaption><\/figure><\/div>\n\n\n\n<p>Ya hasil akhirnya akan seperti gambar diatas dimana ketika kalian buka file .php yang telah kalian bikin dengan kode diatas, ketika dibuka akan langsung muncul json, yang nantinya akan bisa di implementasikan ke dalam aplikasi mobile ataupun ke dalam web-web orang lain.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Trobleshooting (Problem Solving)<\/h2>\n\n\n\n<p>Biasanya sering banget terjadi masalah-masalah pada saat implementasi openstream ataupun yang lainnya, berikut penyelesaian masalah yang gw rangkum untuk studi kasus ini :<br><br><strong>&#8211; Failed to Connect Database<\/strong> : pastikan kalian terhubung databasenya, kalo lokal pastiin xamppnya aktif untuk mysql dan phpmyadminnya, atau kemungkinan nama database atau pass nya salah, bisa jadi tidak sesuai.<br><br><strong>&#8211; Data tidak muncul \/ Load<\/strong> : pastikan kalian menggunakan query yang benar untuk menampilkan datanya, dan memanggil dengan nama tabel yang benar, jangan tipo, di cek lagi teliti.<br><br><strong>&#8211; fopen failed to open stream no such file or directory<\/strong> : ketika kalian menggunakan fopen dan muncul tulisan ini, biasanya file yang kalian akan buat tidak tersimpan atau gabisa dibaca oleh fopen, langkah pertama yang kalian harus cek yaitu peratiin lokasi penyimpanannya, apakah file tersebut berhasil tersimpan atau tidak, dan pastikan kalian telah memberikan \/ merubah izin akses (premissions) kedalam folder yang ingin kalian simpan menjadi &#8220;write&#8221; (baik folder di komputer\/local ataupun kalian menggunakan hosting di folder yang ada pada file manager hosting).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Penutup<\/h2>\n\n\n\n<p>yoi mamen, selamat, kalian telah berhasil mengimplementasikan rest api json php engine (get), gapapa, gw jg masih belajar, santuy, tetep semangat dan terus belajar!<\/p>\n<div id=\"lucky-4145276808\" class=\"lucky-after-content lucky-entity-placement\"><script async src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js?client=ca-pub-5605825534849002\" crossorigin=\"anonymous\"><\/script><ins class=\"adsbygoogle\" style=\"display:block;\" data-ad-client=\"ca-pub-5605825534849002\" \ndata-ad-slot=\"5317815257\" \ndata-ad-format=\"auto\" data-full-width-responsive=\"true\"><\/ins>\n<script> \n(adsbygoogle = window.adsbygoogle || []).push({}); \n<\/script>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Sepatah Dua kata&#8230; Yooo, kali ini gw mau share tentang cara buat rest api json php engine (GET) untuk pengambilan data \/ membaca data dari mysql database yang di olah menjadi JSON dan bisa digunakan \/ dibaca pada situs lain atau aplikasi mobile (Aplikasi luckytruedev pun menggunakan rest api yang di simpan pada luckytruedev API [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":2672,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[350],"tags":[352,354,353,351],"class_list":["post-2671","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-web","tag-backend","tag-json","tag-rest-api","tag-web"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/luckytruedev.com\/learning\/wp-json\/wp\/v2\/posts\/2671","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/luckytruedev.com\/learning\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/luckytruedev.com\/learning\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/luckytruedev.com\/learning\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/luckytruedev.com\/learning\/wp-json\/wp\/v2\/comments?post=2671"}],"version-history":[{"count":24,"href":"https:\/\/luckytruedev.com\/learning\/wp-json\/wp\/v2\/posts\/2671\/revisions"}],"predecessor-version":[{"id":2704,"href":"https:\/\/luckytruedev.com\/learning\/wp-json\/wp\/v2\/posts\/2671\/revisions\/2704"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/luckytruedev.com\/learning\/wp-json\/wp\/v2\/media\/2672"}],"wp:attachment":[{"href":"https:\/\/luckytruedev.com\/learning\/wp-json\/wp\/v2\/media?parent=2671"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/luckytruedev.com\/learning\/wp-json\/wp\/v2\/categories?post=2671"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/luckytruedev.com\/learning\/wp-json\/wp\/v2\/tags?post=2671"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}