{"id":198,"date":"2017-07-01T18:00:43","date_gmt":"2017-07-01T16:00:43","guid":{"rendered":"http:\/\/blog.via-internet.de\/?p=198"},"modified":"2023-04-22T17:21:44","modified_gmt":"2023-04-22T15:21:44","slug":"ionic-app-from-scratch","status":"publish","type":"post","link":"https:\/\/via-internet.de\/blog\/2017\/07\/01\/ionic-app-from-scratch\/","title":{"rendered":"Ionic | App from Scratch"},"content":{"rendered":"\n<h1 class=\"wp-block-heading\">Prepare Environment<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Install Node.JS<\/h2>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ LATEST=18.16.0 \n$ nvm install $LATEST --latest-npm node --version  \n$ npm --version \n$ nvm alias latest $LATEST\n$ nvm alias default $LATEST <\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Install Ionic<\/h2>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ npm -g install ionic@latest\n$ ionic -version<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Create an app from Template<\/h2>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">ionic start --list\nionic start sidemenu sidemenu\nionic start super super<\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">Introduction: First App<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Prepare the base Application<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Create basic structure from template<\/h2>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ ionic start app_from_scratch sidemenu --type angular\n$ cd app_from_scratch<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Some name changing<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">To keep the structure of the filenames the same, i like to change the name for the routing module (changing the dash to a dot)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">from<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">app-routing.module.ts<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">to<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">app-routing.module.ts<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Show base app<\/h2>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ ionic serve -c<\/pre>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"http:\/\/blog.via-internet.de\/wp-content\/uploads\/2016\/11\/Bildschirmfoto-2016-11-16-um-18.04.31.png\"><img loading=\"lazy\" decoding=\"async\" width=\"215\" height=\"300\" src=\"http:\/\/blog.via-internet.de\/wp-content\/uploads\/2016\/11\/Bildschirmfoto-2016-11-16-um-18.04.31-215x300.png\" alt=\"bildschirmfoto-2016-11-16-um-18-04-31\" class=\"wp-image-210\" srcset=\"https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2016\/11\/Bildschirmfoto-2016-11-16-um-18.04.31-215x300.png 215w, https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2016\/11\/Bildschirmfoto-2016-11-16-um-18.04.31.png 400w\" sizes=\"auto, (max-width: 215px) 100vw, 215px\" \/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Add a page<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Create a new page with the name &#8220;About&#8221;\n<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ ionic generate page About<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Add import to app.components.ts\n<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">  public appPages = [\n    { title: 'Home', url: '\/home', icon: 'home' },\n    { title: 'List', url: '\/list', icon: 'list' },\n    { title: 'About', url: '\/about', icon: '' }\n  ];<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Add item to app-routing.module.ts<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">const routes: Routes = [\n  { path: '', redirectTo: 'home', pathMatch: 'full' },\n  { path: 'home', loadChildren: '.\/home\/home.module#HomePageModule' },\n  { path: 'list', loadChildren: '.\/list\/list.module#ListPageModule' },\n  { path: 'about', loadChildren: '.\/about\/about.module#AboutPageModule' }\n];<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Save the file now, and you will see the sidemenu entry:<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.via-internet.de\/wp-content\/uploads\/2018\/08\/Bildschirmfoto-2018-08-17-um-15.28.58.png\" alt=\"\" class=\"wp-image-1286\" width=\"369\" height=\"235\" srcset=\"https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2018\/08\/Bildschirmfoto-2018-08-17-um-15.28.58.png 738w, https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2018\/08\/Bildschirmfoto-2018-08-17-um-15.28.58-300x191.png 300w\" sizes=\"auto, (max-width: 369px) 100vw, 369px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Looks great, but&#8230; where is the sidemenu?<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"689\" height=\"1024\" data-id=\"1289\" src=\"https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2018\/08\/Bildschirmfoto-2018-08-17-um-15.32.13-689x1024.png\" alt=\"\" class=\"wp-image-1289\" srcset=\"https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2018\/08\/Bildschirmfoto-2018-08-17-um-15.32.13-689x1024.png 689w, https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2018\/08\/Bildschirmfoto-2018-08-17-um-15.32.13-202x300.png 202w, https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2018\/08\/Bildschirmfoto-2018-08-17-um-15.32.13-768x1142.png 768w, https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2018\/08\/Bildschirmfoto-2018-08-17-um-15.32.13-1033x1536.png 1033w, https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2018\/08\/Bildschirmfoto-2018-08-17-um-15.32.13.png 1232w\" sizes=\"auto, (max-width: 689px) 100vw, 689px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"689\" height=\"1024\" data-id=\"1290\" src=\"https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2018\/08\/Bildschirmfoto-2018-08-17-um-15.32.21-689x1024.png\" alt=\"\" class=\"wp-image-1290\" srcset=\"https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2018\/08\/Bildschirmfoto-2018-08-17-um-15.32.21-689x1024.png 689w, https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2018\/08\/Bildschirmfoto-2018-08-17-um-15.32.21-202x300.png 202w, https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2018\/08\/Bildschirmfoto-2018-08-17-um-15.32.21-768x1142.png 768w, https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2018\/08\/Bildschirmfoto-2018-08-17-um-15.32.21-1033x1536.png 1033w, https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2018\/08\/Bildschirmfoto-2018-08-17-um-15.32.21.png 1232w\" sizes=\"auto, (max-width: 689px) 100vw, 689px\" \/><\/figure>\n<\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Ok, if you check the home page html code (home.page.html), you will find a button for the side menu<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;ion-header>\n  &lt;ion-toolbar>\n    &lt;ion-buttons slot=\"start\">\n      &lt;ion-menu-button>&lt;\/ion-menu-button>\n    &lt;\/ion-buttons>\n    &lt;ion-title>Home&lt;\/ion-title>\n  &lt;\/ion-toolbar>\n&lt;\/ion-header><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Missing in about.page.html:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;ion-header>\n  &lt;ion-toolbar>\n    &lt;ion-title>About&lt;\/ion-title>\n  &lt;\/ion-toolbar>\n&lt;\/ion-header><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">So, we had to add the desired code snippet<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;ion-header>\n    &lt;ion-toolbar>\n      &lt;ion-buttons slot=\"start\">\n        &lt;ion-menu-button>&lt;\/ion-menu-button>\n      &lt;\/ion-buttons>\n      &lt;ion-title>About&lt;\/ion-title>\n    &lt;\/ion-toolbar>\n  &lt;\/ion-header><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Add some Ionic Components<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Look at the <a href=\"https:\/\/github.com\/driftyco\/ionic-preview-app\">Ionic Preview App<\/a>, or read the <a href=\"http:\/\/ionicframework.com\/docs\/v2\/components\/\">documentation<\/a>, if you what to dive in immediately.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Or just copy some code from the <a href=\"http:\/\/ionicframework.com\/docs\/v2\/components\/\">documentation<\/a> page and try by yourself:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"288\" src=\"http:\/\/blog.via-internet.de\/wp-content\/uploads\/2016\/11\/Bildschirmfoto-2016-11-16-um-19.01.22-300x288.png\" alt=\"bildschirmfoto-2016-11-16-um-19-01-22\" class=\"wp-image-236\" srcset=\"https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2016\/11\/Bildschirmfoto-2016-11-16-um-19.01.22-300x288.png 300w, https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2016\/11\/Bildschirmfoto-2016-11-16-um-19.01.22-1024x985.png 1024w, https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2016\/11\/Bildschirmfoto-2016-11-16-um-19.01.22-768x738.png 768w, https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2016\/11\/Bildschirmfoto-2016-11-16-um-19.01.22-1536x1477.png 1536w, https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2016\/11\/Bildschirmfoto-2016-11-16-um-19.01.22.png 1868w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"215\" height=\"300\" src=\"http:\/\/blog.via-internet.de\/wp-content\/uploads\/2016\/11\/Bildschirmfoto-2016-11-16-um-18.58.48-215x300.png\" alt=\"bildschirmfoto-2016-11-16-um-18-58-48\" class=\"wp-image-234\" srcset=\"https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2016\/11\/Bildschirmfoto-2016-11-16-um-18.58.48-215x300.png 215w, https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2016\/11\/Bildschirmfoto-2016-11-16-um-18.58.48-734x1024.png 734w, https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2016\/11\/Bildschirmfoto-2016-11-16-um-18.58.48-768x1071.png 768w, https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2016\/11\/Bildschirmfoto-2016-11-16-um-18.58.48-1101x1536.png 1101w, https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2016\/11\/Bildschirmfoto-2016-11-16-um-18.58.48-1468x2048.png 1468w, https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2016\/11\/Bildschirmfoto-2016-11-16-um-18.58.48.png 1504w\" sizes=\"auto, (max-width: 215px) 100vw, 215px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">We describe the steps to add additional components in detail in <a href=\"\/blog\/2018\/08\/17\/ionic-4-create-an-app-from-scratch-adding-content\/\">this blog<\/a>.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Directory structure of an application<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">One possible way to build an app is:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>create a base app from blank template<\/li>\n\n\n\n<li>add desired pages, code and components<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">To find out the necessary steps to add an new page or component, look into the templates and compare a template with the blank template. the differences are the required steps to an a component.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For example, if you want to add tabs to your app, then compare the blank template with the tabs template:\n<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ ionic start starter_tabs  tabs  --type angular --no-deps --no-git --no-link\n$ ionic start starter_blank blank --type angular --no-deps --no-git --no-link<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The diff command shows the changes between the two templates:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ diff -r -w starter_tabs starter_blank<\/pre>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">diff -r -w starter_blank\/ionic.config.json starter_tabs\/ionic.config.json\n2c2\n&lt;   \"name\": \"starter_blank\",\n---\n>   \"name\": \"starter_tabs\",\ndiff -r -w starter_blank\/package.json starter_tabs\/package.json\n2c2\n&lt;   \"name\": \"starter_blank\",\n---\n>   \"name\": \"starter_tabs\",\nOnly in starter_tabs\/src\/app: about\ndiff -r -w starter_blank\/src\/app\/app-routing.module.ts starter_tabs\/src\/app\/app-routing.module.ts\n5,6c5\n&lt;   { path: '', redirectTo: 'home', pathMatch: 'full' },\n&lt;   { path: 'home', loadChildren: '.\/home\/home.module#HomePageModule' },\n---\n>   { path: '', loadChildren: '.\/tabs\/tabs.module#TabsPageModule' }\n8d6\n&lt; \ndiff -r -w starter_blank\/src\/app\/app.module.ts starter_tabs\/src\/app\/app.module.ts\n3c3\n&lt; import { RouterModule, RouteReuseStrategy, Routes } from '@angular\/router';\n---\n> import { RouterModule, RouteReuseStrategy } from '@angular\/router';\n9d8\n&lt; import { AppComponent } from '.\/app.component';\n10a10\n> import { AppComponent } from '.\/app.component';\nOnly in starter_tabs\/src\/app: contact\ndiff -r -w starter_blank\/src\/app\/home\/home.module.ts starter_tabs\/src\/app\/home\/home.module.ts\n0a1,2\n> import { IonicModule } from '@ionic\/angular';\n> import { RouterModule } from '@angular\/router';\n3d4\n&lt; import { IonicModule } from '@ionic\/angular';\n5,6d5\n&lt; import { RouterModule } from '@angular\/router';\n&lt; \n10a10\n>     IonicModule,\n13,19c13\n&lt;     IonicModule,\n&lt;     RouterModule.forChild([\n&lt;       {\n&lt;         path: '',\n&lt;         component: HomePage\n&lt;       }\n&lt;     ])\n---\n>     RouterModule.forChild([{ path: '', component: HomePage }])\ndiff -r -w starter_blank\/src\/app\/home\/home.page.html starter_tabs\/src\/app\/home\/home.page.html\n3,5c3\n&lt;     &lt;ion-title>\n&lt;       Ionic Blank\n&lt;     &lt;\/ion-title>\n---\n>     &lt;ion-title>Home&lt;\/ion-title>\ndiff -r -w starter_blank\/src\/app\/home\/home.page.spec.ts starter_tabs\/src\/app\/home\/home.page.spec.ts\n14,15c14\n&lt;     })\n&lt;       .compileComponents();\n---\n>     }).compileComponents();\ndiff -r -w starter_blank\/src\/app\/home\/home.page.ts starter_tabs\/src\/app\/home\/home.page.ts\n6c6\n&lt;   styleUrls: ['home.page.scss'],\n---\n>   styleUrls: ['home.page.scss']\n8,10c8\n&lt; export class HomePage {\n&lt; \n&lt; }\n---\n> export class HomePage {}\nOnly in starter_tabs\/src\/app: tabs\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Some differences come from the different names (starter_blank vs. starter_tabs, HomePage vs. TabsPage).\u00a0The significant changes are those, which are new in the starter_tabs directory. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Prepare Environment Install Node.JS Install Ionic Create an app from Template Introduction: First App Prepare the base Application Create basic structure from template Some name changing To keep the structure of the filenames the same, i like to change the name for the routing module (changing the dash to a dot) from to Show base app Add a page Create a new page with the name &#8220;About&#8221; Add import to app.components.ts Add item to app-routing.module.ts Save the file now, and you will see the sidemenu entry: Looks great, but&#8230; where is the sidemenu? Ok, if you check the home page html [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_crdt_document":"","_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[98,35],"tags":[109],"class_list":["post-198","post","type-post","status-publish","format-standard","hentry","category-ionic","category-ionic-4","tag-ionic-4"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":false,"_links":{"self":[{"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/posts\/198","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/comments?post=198"}],"version-history":[{"count":3,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/posts\/198\/revisions"}],"predecessor-version":[{"id":9489,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/posts\/198\/revisions\/9489"}],"wp:attachment":[{"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/media?parent=198"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/categories?post=198"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/tags?post=198"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}