{"id":231490,"date":"2021-04-20T15:00:16","date_gmt":"2021-04-20T12:00:16","guid":{"rendered":"https:\/\/en.buradabiliyorum.com\/what-is-a-progressive-web-app-pwa-cloudsavvy-it\/"},"modified":"2021-04-20T15:00:16","modified_gmt":"2021-04-20T12:00:16","slug":"what-is-a-progressive-web-app-pwa-cloudsavvy-it","status":"publish","type":"post","link":"https:\/\/buradabiliyorum.com\/en\/what-is-a-progressive-web-app-pwa-cloudsavvy-it\/","title":{"rendered":"#What Is A Progressive Web App (PWA)? \u2013 CloudSavvy IT"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_84 counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<label for=\"ez-toc-cssicon-toggle-item-6a2f0bbd1c0fb\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #dd3333;color:#dd3333\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #dd3333;color:#dd3333\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\"  id=\"ez-toc-cssicon-toggle-item-6a2f0bbd1c0fb\" checked aria-label=\"Toggle\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/buradabiliyorum.com\/en\/what-is-a-progressive-web-app-pwa-cloudsavvy-it\/#Understanding_%E2%80%9CProgressive%E2%80%9D_Enhancement\" >Understanding \u201cProgressive\u201d Enhancement<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/buradabiliyorum.com\/en\/what-is-a-progressive-web-app-pwa-cloudsavvy-it\/#Feature_Availability\" >Feature Availability<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/buradabiliyorum.com\/en\/what-is-a-progressive-web-app-pwa-cloudsavvy-it\/#PWA_Traits\" >PWA Traits<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/buradabiliyorum.com\/en\/what-is-a-progressive-web-app-pwa-cloudsavvy-it\/#Web_App_Manifest\" >Web App Manifest<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/buradabiliyorum.com\/en\/what-is-a-progressive-web-app-pwa-cloudsavvy-it\/#Service_Worker\" >Service Worker<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/buradabiliyorum.com\/en\/what-is-a-progressive-web-app-pwa-cloudsavvy-it\/#Summary\" >Summary<\/a><\/li><\/ul><\/nav><\/div>\n<p><strong>&#8220;#What Is A Progressive Web <a href=\"https:\/\/buradabiliyorum.com\/en\/category\/download-scripts-themes-apps\/\" data-internallinksmanager029f6b8e52c=\"9\" title=\"Download Scripts &amp; Themes &amp; Apps\" target=\"_blank\" rel=\"noopener\">App<\/a> (PWA)? \u2013 CloudSavvy IT&#8221;<\/strong><\/p>\n<div id=\"article-content-area\">\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-10756 size-full\" data-pagespeed-lazy-src=\"https:\/\/www.cloudsavvyit.com\/p\/uploads\/2021\/04\/c6530303.png?width=1200&amp;trim=1,1&amp;bg-color=000&amp;pad=1,1\" alt=\"\" width=\"700\" height=\"350\" src=\"\/pagespeed_static\/1.JiBnMqyl6S.gif\" onload=\"pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);\" onerror=\"this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);\"\/>Progressive Web Apps (PWAs) are websites that use a collection of modern web technologies to provide app-like user experiences. Typical PWA features include offline support, background sync and the ability to \u201cinstall\u201d the site as a mobile app.<\/p>\n<p>PWA is a <a href=\"https:\/\/buradabiliyorum.com\/en\/category\/general\/\" data-internallinksmanager029f6b8e52c=\"3\" title=\"General\" target=\"_blank\" rel=\"noopener\">general<\/a> term that\u2019s used to reference multiple technologies. A PWA will usually include a <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/Manifest\">Web App Manifest<\/a> and a <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/Service_Worker_API\">Service Worker<\/a>. The Web App Manifest provides data used to register the site with an operating system\u2019s app list. The Service Worker can be used to add features which stay alive after the site\u2019s browser tabs are closed.<\/p>\n<p>Not every site will use all the possible capabilities. Some will include a Web App Manifest but no Service Worker; others will have a Service Worker but no app installation support. There\u2019s no particular standard defining how a PWA should behave. A PWA is any site which uses some of these technologies to offer some level of feature parity with native apps.<\/p>\n<h2 id=\"understanding-progressive-enhancement\"><span class=\"ez-toc-section\" id=\"Understanding_%E2%80%9CProgressive%E2%80%9D_Enhancement\"><\/span>Understanding \u201cProgressive\u201d Enhancement<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>The \u201cprogressive\u201d part of Progressive Web Apps derives from their expected use of progressive enhancement. The PWA features are still fairly new and may not be supported in all browsers. A PWA should continue to provide its core web-based experience even if browser APIs such as service workers are unavailable.<\/p>\n<p>Features such as push notifications shouldn\u2019t be a mandatory part of your experience. If your site fails to register for push notifications, the rest of the site should continue to function normally. When the browser <em>does<\/em> support modern technologies, your site should treat them as an enhancement that gives the user extra convenience.<\/p>\n<h2 id=\"feature-availability\"><span class=\"ez-toc-section\" id=\"Feature_Availability\"><\/span>Feature Availability<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/developers.google.com\/web\/updates\/2015\/12\/getting-started-pwa\">PWA features<\/a> provide deeper integration between your website and the user\u2019s device. Consequently, the APIs used to create them are restricted to HTTPS connections. This helps ensure content hasn\u2019t been tampered with to persistently install nefarious apps on your device.<\/p>\n<p>Individual features are gated behind user-facing <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/Permissions\">web permissions<\/a>. Capabilities such as push notifications could be abused to bombard the user with unwanted content. Users need to acknowledge a permission prompt that grants your site the ability to use potentially intrusive features.<\/p>\n<p>These conditions mean you need to use <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Learn\/Tools_and_testing\/Cross_browser_testing\/Feature_detection\">feature detection<\/a> before trying to use most of the relevant APIs. A feature might be unavailable because the browser doesn\u2019t support it. However, it might also be disabled due to an insecure connection, or because the user denied a permission prompt. You cannot anticipate the latter scenario; the user might change their mind at any time.<\/p>\n<h2 id=\"pwa-traits\"><span class=\"ez-toc-section\" id=\"PWA_Traits\"><\/span>PWA Traits<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Although there\u2019s no standard for PWAs, most sites offering an app-like experience have the following traits:<\/p>\n<ul>\n<li><strong>Installable<\/strong> \u2013 On supported platforms, the website can be \u201cinstalled\u201d like a mobile app. The effects vary by operating system and browser.<\/li>\n<li><strong>Works Offline<\/strong> \u2013 Service Workers are scripts which continue to run even when your site isn\u2019t open. They can also intercept network requests, allowing you to serve essential assets from a cache. This lets your site keep working when the user\u2019s offline.<\/li>\n<li><strong>App-Like UI<\/strong> \u2013 Although not a requirement, PWAs are likely to place greater emphasis on using modern UI controls which integrate well with native app styles. PWAs will need to be responsive to different screen sizes.<\/li>\n<\/ul>\n<p>Beyond these core traits, individual PWAs will layer up additional features to create the user experience they require. These features may include push notifications, background uploads and periodic background data fetches. These optional capabilities let you re-engage the user and anticipate their needs.<\/p>\n<h2 id=\"web-app-manifest\"><span class=\"ez-toc-section\" id=\"Web_App_Manifest\"><\/span>Web App Manifest<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/Manifest\">Web App Manifests<\/a> are JSON files defining key information about your site. This includes details such as site name, accent colour and icon file locations.<\/p>\n<p>Browsers and operating systems use the information to create system-level app entries when you \u201cinstall\u201d your site. This is how your site gets an app drawer icon on Android or a Start menu link on Windows.<\/p>\n<p>Here\u2019s an example manifest:<\/p>\n<div class=\"wp-geshi-highlight-wrap5\">\n<div class=\"wp-geshi-highlight-wrap4\">\n<div class=\"wp-geshi-highlight-wrap3\">\n<div class=\"wp-geshi-highlight-wrap2\">\n<div class=\"wp-geshi-highlight-wrap\">\n<div class=\"wp-geshi-highlight\">\n<div class=\"json\">\n<pre class=\"de1\">{\"name\": \"Example App\",&#13;\n    \"display\": \"standalone\",&#13;\n    \"background_color\": \"#fff\",&#13;\n    \"description\": \"My App\",&#13;\n    \"start_url\": \"\/\",&#13;\n    \"icons\": [&#13;\n        {&#13;\n            \"src\": \"\/icon.png\",&#13;\n            \"sizes\": \"512x512\",&#13;\n            \"type\": \"image\/png\"&#13;\n        }&#13;\n    ]&#13;\n}<\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p>The <code>display<\/code> property declares that the site should be launched in its own standalone window when it\u2019s opened from an app drawer. The <code>start_url<\/code> property defines the initial URL to navigate to after launch.<\/p>\n<p>Your site must advertise its Web App Manifest using a <code>link<\/code> tag in its HTML:<\/p>\n<div class=\"wp-geshi-highlight-wrap5\">\n<div class=\"wp-geshi-highlight-wrap4\">\n<div class=\"wp-geshi-highlight-wrap3\">\n<div class=\"wp-geshi-highlight-wrap2\">\n<div class=\"wp-geshi-highlight-wrap\">\n<div class=\"wp-geshi-highlight\">\n<div class=\"html\">\n<pre class=\"de1\">&lt;link rel=\"manifest\" href=\"\/manifest.json\"&gt;<\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p>Browsers will then attempt to retrieve the manifest. If it\u2019s valid, the user may be suggested to \u201cinstall\u201d the app. On Chrome for Android, this appears as a \u201cAdd to Homescreen\u201d bar. The bar\u2019s not guaranteed to appear \u2013 Chrome uses heuristics such as the frequency you visit the site to determine whether an install hint should be shown.<\/p>\n<h2 id=\"service-worker\"><span class=\"ez-toc-section\" id=\"Service_Worker\"><\/span>Service Worker<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/Service_Worker_API\">Service Workers<\/a> are created using JavaScript. They stand apart from your site\u2019s main JavaScript. A service worker is registered from your main script. The browser then keeps the service worker running when the tab is closed. This allows you to run background operations that can outlive the user\u2019s visit to your site.<\/p>\n<p>Here\u2019s how you register a service worker:<\/p>\n<div class=\"wp-geshi-highlight-wrap5\">\n<div class=\"wp-geshi-highlight-wrap4\">\n<div class=\"wp-geshi-highlight-wrap3\">\n<div class=\"wp-geshi-highlight-wrap2\">\n<div class=\"wp-geshi-highlight-wrap\">\n<div class=\"wp-geshi-highlight\">\n<div class=\"javascript\">\n<pre class=\"de1\"><span class=\"kw1\">if<\/span> <span class=\"br0\">(<\/span><span class=\"st0\">\"serviceWorker\"<\/span> <span class=\"kw1\">in<\/span> navigator<span class=\"br0\">)<\/span> <span class=\"br0\">{<\/span>\n    navigator.<span class=\"me1\">serviceWorker<\/span>.<span class=\"me1\">register<\/span><span class=\"br0\">(<\/span><span class=\"st0\">\"\/service-worker.js\"<\/span><span class=\"br0\">)<\/span><span class=\"sy0\">;<\/span>\n<span class=\"br0\">}<\/span><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p>The <code>service-worker.js<\/code> script will be downloaded and activated as a service worker. A service worker doesn\u2019t offer any useful functionality on its own. You need to use APIs such as <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/Cache\">Caches<\/a>, <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/Web_Periodic_Background_Synchronization_API\">Background Sync<\/a> or <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/Push_API\">Push Notifications<\/a> within your service worker.<\/p>\n<p>Here\u2019s a basic example that caches all the assets associated with our app:<\/p>\n<div class=\"wp-geshi-highlight-wrap5\">\n<div class=\"wp-geshi-highlight-wrap4\">\n<div class=\"wp-geshi-highlight-wrap3\">\n<div class=\"wp-geshi-highlight-wrap2\">\n<div class=\"wp-geshi-highlight-wrap\">\n<div class=\"wp-geshi-highlight\">\n<div class=\"javascript\">\n<pre class=\"de1\">self.<span class=\"me1\">addEventListener<\/span><span class=\"br0\">(<\/span><span class=\"st0\">\"install\"<\/span><span class=\"sy0\">,<\/span> e <span class=\"sy0\">=&gt;<\/span> <span class=\"br0\">{<\/span>\n    e.<span class=\"me1\">waitUntil<\/span><span class=\"br0\">(<\/span>async <span class=\"br0\">(<\/span><span class=\"br0\">)<\/span> <span class=\"sy0\">=&gt;<\/span> <span class=\"br0\">{<\/span>\n        <span class=\"kw1\">const<\/span> cache <span class=\"sy0\">=<\/span> await caches.<span class=\"me1\">open<\/span><span class=\"br0\">(<\/span><span class=\"st0\">\"my-app-cache\"<\/span><span class=\"br0\">)<\/span><span class=\"sy0\">;<\/span>\n        await cache.<span class=\"me1\">addAll<\/span><span class=\"br0\">(<\/span><span class=\"br0\">[<\/span>\n            <span class=\"st0\">\"\/index.html\"<\/span><span class=\"sy0\">,<\/span>\n            <span class=\"st0\">\"\/my-css.css\"<\/span><span class=\"sy0\">,<\/span>\n            <span class=\"st0\">\"\/my-js.js\"<\/span><span class=\"sy0\">,<\/span>\n            <span class=\"st0\">\"\/assets\/icon.png\"<\/span><span class=\"sy0\">,<\/span>\n            <span class=\"st0\">\"\/assets\/my-header-image.png\"<\/span>\n        <span class=\"br0\">]<\/span><span class=\"br0\">)<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"br0\">}<\/span><span class=\"br0\">)<\/span><span class=\"sy0\">;<\/span>\n<span class=\"br0\">}<\/span><span class=\"br0\">)<\/span><span class=\"sy0\">;<\/span>\n\u00a0\nself.<span class=\"me1\">addEventListener<\/span><span class=\"br0\">(<\/span><span class=\"st0\">\"fetch\"<\/span><span class=\"sy0\">,<\/span> e <span class=\"sy0\">=&gt;<\/span> <span class=\"br0\">{<\/span>\n    e.<span class=\"me1\">respondWith<\/span><span class=\"br0\">(<\/span>async <span class=\"br0\">(<\/span><span class=\"br0\">)<\/span> <span class=\"sy0\">=&gt;<\/span> <span class=\"br0\">{<\/span>\n\u00a0\n        <span class=\"kw1\">const<\/span> cached <span class=\"sy0\">=<\/span> await catches.<span class=\"me1\">match<\/span><span class=\"br0\">(<\/span>e.<span class=\"me1\">request<\/span><span class=\"br0\">)<\/span><span class=\"sy0\">;<\/span>\n        <span class=\"kw1\">if<\/span> <span class=\"br0\">(<\/span>cached<span class=\"br0\">)<\/span> <span class=\"kw1\">return<\/span> cached<span class=\"sy0\">;<\/span>\n\u00a0\n        <span class=\"kw1\">const<\/span> response <span class=\"sy0\">=<\/span> await fetch<span class=\"br0\">(<\/span>e.<span class=\"me1\">request<\/span><span class=\"br0\">)<\/span><span class=\"sy0\">;<\/span>\n        <span class=\"kw1\">return<\/span> response<span class=\"sy0\">;<\/span>\n\u00a0\n    <span class=\"br0\">}<\/span><span class=\"br0\">)<\/span>\n<span class=\"br0\">}<\/span><span class=\"br0\">)<\/span><span class=\"sy0\">;<\/span><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p>This uses the <code>install<\/code> service worker <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/developers.google.com\/web\/fundamentals\/primers\/service-workers\/lifecycle\">lifecycle event<\/a> to download all the critical assets. They\u2019ll be added to a dedicated cache which is controlled by the service worker.<\/p>\n<p>The service worker also listens to the <code>fetch<\/code> event. This occurs whenever a network request is made. The event object includes a <code>request<\/code> property which is a request object accepted by the <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/Fetch_API\"><code>fetch()<\/code> API<\/a>.<\/p>\n<p>The code first checks whether the request already exists in the cache. If it\u2019s a URL that was cached earlier, this check will pass and the cached response will be returned. Otherwise, the request is forwarded to the <code>fetch()<\/code> API. The asset will be loaded over the network as normal.<\/p>\n<p>This example only exhibits the tip of what service workers can offer. In a real app, you\u2019ll often want more advanced <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/Cache\">caching<\/a>, extra background capabilities and additional lifecycle events (to control how your service worker supersedes, and is superseded by, other versions).<\/p>\n<h2 id=\"summary\"><span class=\"ez-toc-section\" id=\"Summary\"><\/span>Summary<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Progressive Web Apps are web applications which use a set of related browser APIs to offer an app-like experience. You\u2019ve probably used PWAs in the past, even if you weren\u2019t consciously aware of it.<\/p>\n<p>The PWA experience is founded on progressive enhancement and user choice. You need to provide consent before each site can activate its PWA features. Otherwise, the site should provide its core browser-based experience, without the extra capabilities provided by PWA technologies.\n<\/p><\/div>\n<blockquote><p><strong><span style=\"color: #ff6600;\">If you liked the article, do not forget to share it with your friends. Follow us on\u00a0<span style=\"color: #ff0000;\"><a style=\"color: #ff0000;\" href=\"https:\/\/news.google.com\/publications\/CAAqBwgKMLG0nwswvr63Aw\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Google News<\/a><\/span>\u00a0too, click on the star and choose us from your favorites.<\/span><\/strong><\/p><\/blockquote>\n<blockquote>\n<p style=\"text-align: center;\">For forums sites go to <span style=\"color: #ff9900;\"><a style=\"color: #ff9900;\" href=\"https:\/\/forum.buradabiliyorum.com\/\" target=\"_blank\" rel=\"noopener\">Forum.BuradaBiliyorum.Com<\/a><\/span><\/strong><\/p>\n<\/blockquote>\n<blockquote>\n<p style=\"text-align: center;\"><strong>If you want to read more like this article, you can visit our <span style=\"color: #ff9900;\"><a style=\"color: #ff9900;\" href=\"https:\/\/en.buradabiliyorum.com\/technology\/\" target=\"_blank\" rel=\"noopener\">Technology category.<\/a><\/span><\/strong><\/p>\n<\/blockquote>\n<p><span style=\"color: black;\"><a style=\"color: #ff9900;\" href=\"https:\/\/www.cloudsavvyit.com\/10750\/what-is-a-progressive-web-app-pwa\/\" target=\"_blank\" rel=\"noopener\">Source<\/a><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#8220;#What Is A Progressive Web App (PWA)? \u2013 CloudSavvy IT&#8221; Progressive Web Apps (PWAs) are websites that use a collection of modern web technologies to provide app-like user experiences. Typical PWA features include offline support, background sync and the ability to \u201cinstall\u201d the site as a mobile app. PWA is a general term that\u2019s used&#8230;<\/p>\n","protected":false},"author":1,"featured_media":231491,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"https:\/\/www.cloudsavvyit.com\/p\/uploads\/2021\/04\/c6530303.png","fifu_image_alt":"","footnotes":""},"categories":[18],"tags":[],"class_list":["post-231490","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technology"],"_links":{"self":[{"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/posts\/231490","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/comments?post=231490"}],"version-history":[{"count":0,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/posts\/231490\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/media\/231491"}],"wp:attachment":[{"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/media?parent=231490"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/categories?post=231490"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/tags?post=231490"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}