{"id":3227,"date":"2017-02-19T01:23:30","date_gmt":"2017-02-19T01:23:30","guid":{"rendered":"http:\/\/www.rezafaisal.net\/?p=3227"},"modified":"2017-02-19T01:24:50","modified_gmt":"2017-02-19T01:24:50","slug":"visual-studio-code-and-single-page-applications-on-asp-net-core","status":"publish","type":"post","link":"http:\/\/www.rezafaisal.net\/?p=3227","title":{"rendered":"Visual Studio Code &#038; Single Page Applications on ASP.NET Core"},"content":{"rendered":"<p>Single Page Applications juga dikenal dengan singkatan SPAs.\u00a0 Apa bedanya antara aplikasi web dengan \u201cteknik\u201d Single Page Applications dengan aplikasi web yang telah umum kita kenal selama ini?<\/p>\n<p>Gambar di bawah ini memperlihatkan bagaimana aplikasi web yang telah umum kita kenal. Pertama, setelah web browser sebagai client melakukan request ke server maka server akan memberikan response dengan berupa halaman web HTML.\u00a0 Kemudian kita akan menggunakan halaman web HTML tersebut untuk melakukan sesuatu seprti mengisi form, dan setelah tombol kirim diklik maka data akan dikirim ke server, dan kembali server akan memberikan response berupa halaman HTML.<\/p>\n<p><a href=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2017\/02\/01-3.jpg\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;\" title=\"01\" src=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2017\/02\/01_thumb-3.jpg\" alt=\"01\" width=\"550\" height=\"291\" border=\"0\" \/><\/a><\/p>\n<p>Sedangkan Single Page Applications (SPAs) memiliki cara kerja seperti gambar di bawah ini.\u00a0 Proses pertama sama seperti pada gambar di atas.\u00a0 Tetapi setelah itu tidak akan ada lagi response dari server berupa halaman HTML, tetapi komunikasi hanya akan dilakukan dengan AJAX dan response berupa data dengan format JSON.<\/p>\n<p><a href=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2017\/02\/02-2.jpg\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;\" title=\"02\" src=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2017\/02\/02_thumb-2.jpg\" alt=\"02\" width=\"550\" height=\"291\" border=\"0\" \/><\/a><\/p>\n<p>Saat ini telah banyak framework yang dapat digunakan untuk membuat SPAs yaitu:<\/p>\n<ul>\n<li>AngularJS (<a title=\"https:\/\/angularjs.org\/\" href=\"https:\/\/angularjs.org\/\">https:\/\/angularjs.org\/<\/a>).<\/li>\n<li>Aurelia (<a title=\"http:\/\/aurelia.io\/\" href=\"http:\/\/aurelia.io\/\">http:\/\/aurelia.io\/<\/a>).<\/li>\n<li>KnockoutJS (<a title=\"http:\/\/knockoutjs.com\/\" href=\"http:\/\/knockoutjs.com\/\">http:\/\/knockoutjs.com\/<\/a>).<\/li>\n<li>React (<a title=\"https:\/\/facebook.github.io\/react\/\" href=\"https:\/\/facebook.github.io\/react\/\">https:\/\/facebook.github.io\/react\/<\/a>).<\/li>\n<li>React Redux (<a title=\"https:\/\/github.com\/reactjs\/react-redux\" href=\"https:\/\/github.com\/reactjs\/react-redux\">https:\/\/github.com\/reactjs\/react-redux<\/a>).<\/li>\n<\/ul>\n<p>Cuma itu? Lalu apa bedanya SPAs dengan aplikasi web multi page (Multi Page Applications\/MPAs) dengan implementasi AJAX yang juga sudah umum digunakan pada aplikasi web saat ini?\u00a0 Pertanyaan ini akan dijawab nanti di bagian akhir posting ini.<\/p>\n<p>Posting ini bertujuan untuk memberikan untuk membuat agar Visual Studio Code digunakan untuk membuat SPAs pada ASP.NET Core dengan menggunakan fitur terbaru dari .NET Core SDK 1.0 RC 4 yang juga versi terbaru (hehe).\u00a0 .NET Core SDK 1.0 RC 4 memiliki template yang dapat digunakan untuk membuat SPAs dengan framework-framework seperti yang telah disebutkan di atas.<\/p>\n<p>Untuk dapat menggunakan template tersebut maka terlebih dahulu diinstall software pendukung berikut ini, yaitu:<\/p>\n<ul>\n<li>NodeJS versi 6 atau di atasnya (<a title=\"https:\/\/nodejs.org\/en\/\" href=\"https:\/\/nodejs.org\/en\/\">https:\/\/nodejs.org\/en\/<\/a>).<\/li>\n<li>.NET Core SDK 1.0 RC 4 (<a title=\"https:\/\/github.com\/dotnet\/core\/blob\/master\/release-notes\/rc4-download.md\" href=\"https:\/\/github.com\/dotnet\/core\/blob\/master\/release-notes\/rc4-download.md\">https:\/\/github.com\/dotnet\/core\/blob\/master\/release-notes\/rc4-download.md<\/a>).\u00a0 Untuk sistem operasi Windows maka perlu diunduh SDK Installer dan Runtime Installer, dan install keduanya.<\/li>\n<\/ul>\n<p>Setelah keduanya diinstall maka dapat menjalakan perintah ini pada command prompt atau pada integrated terminal pada Visual Studio Code.<\/p>\n<div id=\"codeSnippetWrapper\" style=\"font-size: 8pt; overflow: auto; cursor: text; font-family: 'Courier New', courier, monospace; width: 97.5%; direction: ltr; text-align: left; margin: 20px 0px 10px; line-height: 12pt; max-height: 200px; background-color: #f4f4f4; border: silver 1px solid; padding: 4px;\">\n<pre id=\"codeSnippet\" style=\"font-size: 8pt; overflow: visible; font-family: 'Courier New', courier, monospace; width: 100%; color: black; direction: ltr; text-align: left; margin: 0em; line-height: 12pt; background-color: #f4f4f4; border-style: none; padding: 0px;\">dotnet <span style=\"color: #0000ff;\">new<\/span> --install Microsoft.AspNetCore.SpaTemplates::*<\/pre>\n<p>&nbsp;<\/p>\n<\/div>\n<p><a href=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2017\/02\/03-1.jpg\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;\" title=\"03\" src=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2017\/02\/03_thumb-2.jpg\" alt=\"03\" width=\"550\" height=\"305\" border=\"0\" \/><\/a><\/p>\n<p>Setelah proses installasi berhasil maka akan dapat dilihat daftar template tambahan seperti berikut ini.<\/p>\n<p><a href=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2017\/02\/04-2.jpg\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;\" title=\"04\" src=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2017\/02\/04_thumb-2.jpg\" alt=\"04\" width=\"550\" height=\"302\" border=\"0\" \/><\/a><\/p>\n<p>Selanjutnya adalah membuat project dengan menggunakan template-template tersebut pada Visual Studio Code.\u00a0 Ada dua cara untuk membuat project SPAs.\u00a0 Pertama dengan menggunakan perintah \u201cdotnet new\u201d dan yang kedua dengan menggunakan generator Yeoman.<\/p>\n<p>{<strong><em>Perintah dotnet<\/em><\/strong>}<\/p>\n<p>Sebagai contoh untuk membuat project SPA dengan framework Knockout.JS dapat dilakukan dengan langkah-langkah berikut.\u00a0 Misal project ini akan disimpan di dalam folder MVCKnockout, maka terlebih dahulu buat folder tersebut kemudian masuk ke dalam folder tersebut via command prompt atau integrated terminal dan ketikkan perintah-perintah berikut.<\/p>\n<div id=\"codeSnippetWrapper\" style=\"font-size: 8pt; overflow: auto; cursor: text; font-family: 'Courier New', courier, monospace; width: 97.5%; direction: ltr; text-align: left; margin: 20px 0px 10px; line-height: 12pt; max-height: 200px; background-color: #f4f4f4; border: silver 1px solid; padding: 4px;\">\n<pre id=\"codeSnippet\" style=\"font-size: 8pt; overflow: visible; font-family: 'Courier New', courier, monospace; width: 100%; color: black; direction: ltr; text-align: left; margin: 0em; line-height: 12pt; background-color: #f4f4f4; border-style: none; padding: 0px;\">dotnet <span style=\"color: #0000ff;\">new<\/span> knockout\r\ndotnet restore<\/pre>\n<p>&nbsp;<\/p>\n<\/div>\n<p>Perintah pertama untuk \u201cmengcopy\u201d file-file template Knockout.JS ke folder MVCKnockout.\u00a0 Kemudian perintah kedua akan \u201cmenginstall\u201d hal-hal yang diperlukan oleh project ini.\u00a0 Setelah itu ketikkan perintah berikut ini untuk menginstall hal-hal yang terkait dengan framework Knockout.JS.<\/p>\n<div id=\"codeSnippetWrapper\" style=\"font-size: 8pt; overflow: auto; cursor: text; font-family: 'Courier New', courier, monospace; width: 97.5%; direction: ltr; text-align: left; margin: 20px 0px 10px; line-height: 12pt; max-height: 200px; background-color: #f4f4f4; border: silver 1px solid; padding: 4px;\">\n<pre id=\"codeSnippet\" style=\"font-size: 8pt; overflow: visible; font-family: 'Courier New', courier, monospace; width: 100%; color: black; direction: ltr; text-align: left; margin: 0em; line-height: 12pt; background-color: #f4f4f4; border-style: none; padding: 0px;\">npm install<\/pre>\n<p>&nbsp;<\/p>\n<\/div>\n<p>Proses ini akan memakan waktu yang cukup lama, karena akan mengunduh file-file yang ukuran totalnya sekitar 50MB yang akan disimpan pada folder npm_modules.\u00a0 Ukuran total folder npm_modules ini akan bervariasi tergantung dari template yang digunakan.\u00a0 Sebagai contoh untuk template yang menggunakan framework Angular akan memiliki total file sekitar 80MB.<\/p>\n<p>Untuk menjalankan aplikasi web ini digunakan perintah berikut.<\/p>\n<div id=\"codeSnippetWrapper\" style=\"font-size: 8pt; overflow: auto; cursor: text; font-family: 'Courier New', courier, monospace; width: 97.5%; direction: ltr; text-align: left; margin: 20px 0px 10px; line-height: 12pt; max-height: 200px; background-color: #f4f4f4; border: silver 1px solid; padding: 4px;\">\n<pre id=\"codeSnippet\" style=\"font-size: 8pt; overflow: visible; font-family: 'Courier New', courier, monospace; width: 100%; color: black; direction: ltr; text-align: left; margin: 0em; line-height: 12pt; background-color: #f4f4f4; border-style: none; padding: 0px;\">dotnet run<\/pre>\n<p>&nbsp;<\/p>\n<\/div>\n<p>Maka secara default akan digunakan alamat <a href=\"http:\/\/localhost:5000\">http:\/\/localhost:5000<\/a> jika ingin mengakses aplikasi web ini.\u00a0 Hasilnya akan dapat dilihat pada gambar di bawah ini.<\/p>\n<p><a href=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2017\/02\/05-2.jpg\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;\" title=\"05\" src=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2017\/02\/05_thumb-2.jpg\" alt=\"05\" width=\"550\" height=\"433\" border=\"0\" \/><\/a><\/p>\n<p>{<strong><em>Yeoman Generator<\/em><\/strong>}<\/p>\n<p>Cara kedua akan diberikan contoh membuat project SPAs dengan menggunakan bantuan Yeoman Generator.\u00a0 Tool ini dapat digunakan bagi pengguna yang masih belum menggunakan SDK .NET Core di atas.\u00a0 Untuk menginstall template SPAs digunakan perintah berikut ini.<\/p>\n<div id=\"codeSnippetWrapper\" style=\"font-size: 8pt; overflow: auto; cursor: text; font-family: 'Courier New', courier, monospace; width: 97.5%; direction: ltr; text-align: left; margin: 20px 0px 10px; line-height: 12pt; max-height: 200px; background-color: #f4f4f4; border: silver 1px solid; padding: 4px;\">\n<pre id=\"codeSnippet\" style=\"font-size: 8pt; overflow: visible; font-family: 'Courier New', courier, monospace; width: 100%; color: black; direction: ltr; text-align: left; margin: 0em; line-height: 12pt; background-color: #f4f4f4; border-style: none; padding: 0px;\">npm install -g yo generator-aspnetcore-spa<\/pre>\n<p>&nbsp;<\/p>\n<\/div>\n<p><a href=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2017\/02\/06-2.jpg\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;\" title=\"06\" src=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2017\/02\/06_thumb-2.jpg\" alt=\"06\" width=\"550\" height=\"328\" border=\"0\" \/><\/a><\/p>\n<p>Gambar di atas adalah contoh penulisan perintah pada integrated terminal pada Visual Studio Code.\u00a0 Setelah proses installasi berhasil dan selesai, maka dapat dibuat project SPAs.\u00a0 Sebagai contoh akan dibuat project SPAs dengan framework Angular yang akan disimpan pada folder AngularCore, maka terlebih dahulu buat folder tersebut, kemudian masuk ke folder tersebut.\u00a0 Selanjutnya akan di-generate template project dengan dengan perintah berikut.<\/p>\n<div id=\"codeSnippetWrapper\" style=\"font-size: 8pt; overflow: auto; cursor: text; font-family: 'Courier New', courier, monospace; width: 97.5%; direction: ltr; text-align: left; margin: 20px 0px 10px; line-height: 12pt; max-height: 200px; background-color: #f4f4f4; border: silver 1px solid; padding: 4px;\">\n<pre id=\"codeSnippet\" style=\"font-size: 8pt; overflow: visible; font-family: 'Courier New', courier, monospace; width: 100%; color: black; direction: ltr; text-align: left; margin: 0em; line-height: 12pt; background-color: #f4f4f4; border-style: none; padding: 0px;\">yo aspnetcore-spa<\/pre>\n<p>&nbsp;<\/p>\n<\/div>\n<p><a href=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2017\/02\/07-2.jpg\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;\" title=\"07\" src=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2017\/02\/07_thumb-2.jpg\" alt=\"07\" width=\"550\" height=\"325\" border=\"0\" \/><\/a><\/p>\n<p>Pada gambar dapat dilihat pilihan framework SPAs yang tersedia.\u00a0 Misal dipilih Angular 2.0.2 kemudian Enter.\u00a0 Kemudian akan ada pilihan type proyek yang akan digunakan.\u00a0 Untuk pilihan ini sebagai contoh dipilih project.json (compatible with .NET Core tooling preview 2 and Visual Studio 2015).\u00a0 Pertanyaan selanjutnya adalah apakah akan digunakan Unit Testing atau tidak, untuk opsi ini akan dipilih n (tidak). Dan selanjutnya akan menentukan nama project yang secara default akan sesuai dengan folder aktif.<\/p>\n<p>Setelah proses pembuatan project berhasil maka dijalankan aplikasi web dari Visual Studio Code dari fitur Debug.\u00a0 Mungkin akan ditemui window konfirmasi seperti gambar di bawah ini, karena akan dijalankan Node.js sebagai runtime untuk menjalankan Server Side Javascript.<\/p>\n<p><a href=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2017\/02\/08-2.jpg\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;\" title=\"08\" src=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2017\/02\/08_thumb-2.jpg\" alt=\"08\" width=\"550\" height=\"325\" border=\"0\" \/><\/a><\/p>\n<p>Dan akan dapat dilihat antarmuka yang sama seperti antarmuka aplikasi web yang digenerate dengan menggunakan perintah \u201cdotnet new\u201d.<\/p>\n<p>{<strong><em>SPAs<\/em><\/strong>}<\/p>\n<p>Kembali ke pertanyaan di atas tentang bedanya SPAs dan aplikasi web multi page (MPAs) dengan AJAX.\u00a0 Mari kita lihat cara kerja aplikasi AngularCore yang telah kita buat di atas.\u00a0 Setelah aplikasi web dari project AngularCore, maka pertama kali akan dilihat tampilan web seperti berikut ini.<\/p>\n<p><a href=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2017\/02\/09-2.jpg\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;\" title=\"09\" src=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2017\/02\/09_thumb-2.jpg\" alt=\"09\" width=\"550\" height=\"330\" border=\"0\" \/><\/a><\/p>\n<p>Halaman di atas dapat dilihat dapat dilihat alamat <a href=\"http:\/\/localhost:5001\/home\">http:\/\/localhost:5001\/home<\/a> pada address bar.\u00a0 Kemudian ketika menu Counter dilik maka akan dapat dilihat halaman berikut.<\/p>\n<p><a href=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2017\/02\/10-1.jpg\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;\" title=\"10\" src=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2017\/02\/10_thumb-1.jpg\" alt=\"10\" width=\"550\" height=\"330\" border=\"0\" \/><\/a><\/p>\n<p>Pada halaman di atas dapat dilihat alamat <a href=\"http:\/\/localhost:5001\/counter\">http:\/\/localhost:5001\/counter<\/a>. Kemudian ketika menu Fetch data diklik makan akan dapat dilihat halaman berikut.<\/p>\n<p><a href=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2017\/02\/11.jpg\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;\" title=\"11\" src=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2017\/02\/11_thumb.jpg\" alt=\"11\" width=\"550\" height=\"330\" border=\"0\" \/><\/a><\/p>\n<p>Maka dapat dilihat alamat <a href=\"http:\/\/localhost:5001\/fetch-data\">http:\/\/localhost:5001\/fetch-data<\/a> pada address bar.<\/p>\n<p>Dengan melihat alamat-alamat tersebut, jika aplikasi web dibangun dengan framework ASP.NET MVC maka seharusnya akan terdapat 3 class controller yaitu:<\/p>\n<ul>\n<li>Class controller home.<\/li>\n<li>Class controller counter.<\/li>\n<li>Class controller fetch-data (tetapi cara penamaan ini tidak akan bisa digunakan untuk nama class).<\/li>\n<\/ul>\n<p>Artinya untuk setiap controller memerlukan sebuah komponen view berupa file *.cshtml, artinya total 3 halaman web.\u00a0 Tetapi jika diperhatikan pada project AngularCore\u00a0 pada folder Views hanya terdapat sebuah folder untuk folder view untuk sebuah class controler HomeController, yaitu folder Home. Dan di dalam folder tersebut hanya terdapat 1 file view Index.cshtml.\u00a0 Ini artinya aplikasi web ini hanya memiliki sebuah halaman web saja. Tetapi dengan sebuah halaman web tersebut dapat memiliki antarmuka yang berbeda-beda seperti pada gambar di atas.<\/p>\n<p>Sebenarnya dengan ASP.NET Web Form hal seperti itu juga bisa dibuat, tetapi perubahan antarmuka dilakukan pada server side.\u00a0 Nah dengan menggunakan framework SPAs, antarmuka dan data dilakukan pada client side.\u00a0 Framework seperti Angular, Knockout dll lah yang dapat digunakan untuk keperluan itu.<\/p>\n<p>Semoga penjelasan di atas dapat memberikan perbedaan antara SPAs dan MPAs.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Single Page Applications juga dikenal dengan singkatan SPAs.\u00a0 Apa bedanya antara aplikasi web dengan \u201cteknik\u201d Single Page Applications dengan aplikasi web yang telah umum kita kenal selama ini? Gambar di bawah ini memperlihatkan bagaimana aplikasi web yang telah umum kita&hellip;<\/p>\n","protected":false},"author":1,"featured_media":3208,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":true,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[6],"tags":[160,161],"class_list":["post-3227","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-softwaredev","tag-asp-net-core","tag-visual-studio-code"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2017\/02\/02_thumb-2.jpg","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p1sNAL-Q3","_links":{"self":[{"href":"http:\/\/www.rezafaisal.net\/index.php?rest_route=\/wp\/v2\/posts\/3227","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.rezafaisal.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.rezafaisal.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.rezafaisal.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.rezafaisal.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3227"}],"version-history":[{"count":2,"href":"http:\/\/www.rezafaisal.net\/index.php?rest_route=\/wp\/v2\/posts\/3227\/revisions"}],"predecessor-version":[{"id":3229,"href":"http:\/\/www.rezafaisal.net\/index.php?rest_route=\/wp\/v2\/posts\/3227\/revisions\/3229"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/www.rezafaisal.net\/index.php?rest_route=\/wp\/v2\/media\/3208"}],"wp:attachment":[{"href":"http:\/\/www.rezafaisal.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3227"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.rezafaisal.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3227"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.rezafaisal.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3227"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}