{"id":330,"date":"2013-09-10T19:47:10","date_gmt":"2013-09-10T19:47:10","guid":{"rendered":"http:\/\/thomasgr.im\/shares\/?p=330"},"modified":"2013-09-10T20:15:13","modified_gmt":"2013-09-10T20:15:13","slug":"quick-fix-to-codeception-phpbrowser-throwing-404-errors-testing-laravel-app-on-virtual-host","status":"publish","type":"post","link":"https:\/\/thomasgr.im\/shares\/2013\/quick-fix-to-codeception-phpbrowser-throwing-404-errors-testing-laravel-app-on-virtual-host\/","title":{"rendered":"A Quick Fix To Codeception&#8217;s PhpBrowser Throwing 404 Errors Upon Testing A Laravel App On A VirtualHost"},"content":{"rendered":"<p><strong>Warning:<\/strong> To a non tech-savvy reader, this may probably be one of the most abstruse post titles ever. Sorry about that. Move along if you will, I promise I won&#8217;t hold it against you.<\/p>\n<p>Having found a dirt-simple solution to an obscure problem I&#8217;ve been having for hours, I felt that I should publish the fix so that it may help others. It&#8217;s one of those things that take literally hundreds of lines of code to diagnose and just over 10 characters to solve for good.<\/p>\n<p>Ready? Let&#8217;s get down to it! <small>(<a href=\"http:\/\/thomasgr.im\/shares\/2013\/quick-fix-to-codeception-phpbrowser-throwing-404-errors-testing-laravel-app-on-virtual-host\/#the-fix\">TL;DR<\/a>)<\/small><\/p>\n<h2>The Problem<\/h2>\n<p>So I have been working on <a href=\"http:\/\/www.laravel.io\/\" rel=\"external\">Laravel<\/a> for a few days now, and it is a real delight.&nbsp;Every one of its components is designed in a clean, beautiful way and whatever construed goal you&#8217;re doing to achieve, whatever methodology you&#8217;re using, <strong>the framework almost never goes against your will<\/strong>.&nbsp;As part of my journey into building a solid Web application, I wanted to use BDD and especially <strong>automated acceptance testing<\/strong> with the <a href=\"http:\/\/www.codeception.com\/\" rel=\"external\">Codeception<\/a> framework.&nbsp;For the few who were brave enough to actually read on without even using Codeception, <strong>kudos to you<\/strong> &mdash;also, you&#8217;re missing out; <a href=\"http:\/\/www.codeception.com\/\" rel=\"external\">install it at once<\/a>. Here&#8217;s a sample of code that you can write to test for the login feature of your application:<\/p>\n<p><!--more--><\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">&lt;?php\r\n$I = new WebGuy($scenario);\r\n$I-&gt;wantTo('log into the application as a regular user');\r\n$I-&gt;amOnPage('\/'); \/\/ home page\r\n$I-&gt;dontSee('Logout');\r\n$I-&gt;see('Login'); \/\/ login link implies we're logged out\r\n$I-&gt;click('Login');\r\n$I-&gt;see('Email');\r\n$I-&gt;see('Password');\r\n$I-&gt;fillField('email', 'regular@local');\r\n$I-&gt;fillField('password', 'regular');\r\n$I-&gt;click('input&#x5B;type=&quot;submit&quot;]'); \/\/ submit the form\r\n$I-&gt;see('Success'); \/\/ login notification\r\n$I-&gt;see('Logout'); \/\/ Logout link implies we're logged in\r\n<\/pre>\n<p>The syntax is so clear and simple <strong>tests can actually be written by people who can&#8217;t be bothered to code<\/strong>. It&#8217;s refreshing and I love it. Anyway, I was aiming at running this test on my Laravel install but I was getting weird bugs: browsing and analysing the first page was fine, however Codeception&#8217;s internal Browsing engine &mdash;PhpBrowser&mdash; <strong>couldn&#8217;t browse to any other page<\/strong>. Meaning the tests on the home page would all be good but clicking on a link of submitting the form systematically led to errors such as this one in the console:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">Failed asserting that&lt;br \/&gt;\r\n--&gt; Whoops! There was an error..cf:before, .cf:after {content: &quot; &quot;;display: table;} .cf:after {clear: both;} .cf {*zoom: 1;} body { font: 14px &quot;Lucida Grande&quot;, &quot;Lucida Sans Unicode&quot;, &quot;Lucida Sans&quot;, Geneva, Verdana, sans-serif; color: #2B2B2B; background-color: #e7e7e7; padding:0; margin: 0; max-height: \r\n&#x5B;Content too long to display. See complete response in '_log' directory]&lt;br \/&gt;\r\n--&gt; contains &quot;xxxx&quot;.<\/pre>\n<h2>The Cause<\/h2>\n<p>After a quick yet painful analysis, I learned that those errors are actually caused by Codeception&#8217;s <strong>PhpBrowser choking on a 404 error<\/strong>. That&#8217;s fine and well, dead pages happen, yet at the same time the application was working wonderfully for me in all major browsers. As an added bonus, the first page tested by the Codeception story was systematically loading properly, be it the homepage, login page or whatever other location. This was extremely confusing: why the hell would a browser work perfectly well on the first page opened with it but fail all subsequent loads? Turns out the bug has to do with the way Codeception, PhpBrowser and Laravel can be intertwined.<\/p>\n<p>See, out-of-the-box, <strong>PhpBrowser doesn&#8217;t play well with Virtual Hosts<\/strong>. And as local installations of Laravel typically use a VHost pointing to <kbd>\/var\/www\/xxxx.dev\/public<\/kbd> so that we can use <kbd>http:\/\/xxxx.dev\/<\/kbd> and hit the app, any test involving browsing will fail. In order to make Codeception load the first page without errors, which is great in itself, you need to <strong>add the :80 port number to your app url in <kbd>acceptance.yml<\/kbd><\/strong>:<\/p>\n<pre class=\"brush: plain; smart-tabs: true; title: ; notranslate\" title=\"\">class_name: WebGuy\r\nmodules:\r\n     enabled: &#x5B;PhpBrowser, WebHelper]\r\n     config:\r\n          PhpBrowser:\r\n               url: 'http:\/\/xxxx.dev:80\/'\r\n<\/pre>\n<p>Now your tests can access the first page they try to load and act on it. However, browsing away from the first page will fail because of Laravel&#8217;s way of handling URLs. Laravel uses a method borrowed from Symfony to get the root URL from which the URL builder derives any URL generated with the <kbd>url()<\/kbd> helper. There is one thing however that you can&#8217;t guess without having read the actual code:<\/p>\n<pre class=\"brush: php; highlight: [6,7,8]; title: ; notranslate\" title=\"\">    public function getHttpHost()\r\n    {\r\n        $scheme = $this-&gt;getScheme();\r\n        $port   = $this-&gt;getPort();\r\n\r\n        if (('http' == $scheme &amp;&amp; $port == 80) || ('https' == $scheme &amp;&amp; $port == 443)) {\r\n            return $this-&gt;getHost();\r\n        }\r\n\r\n        return $this-&gt;getHost().':'.$port;\r\n    }<\/pre>\n<p>Yep, that&#8217;s right: if the port is 80, all URLs generated by Laravel will lack the port number, making PhpBrowser unhappy! Damn.<\/p>\n<h2 id=\"the-fix\">The Fix<\/h2>\n<p>Oh, well. At least now we know what&#8217;s causing all the fuss, the fix is dirt-simple: <strong>change the port used by your local server to anything else than 80<\/strong>. I&#8217;m using 8081 myself, but feel free to choose anything really. Here&#8217;s how it&#8217;s done in Apache2&#8217;s ports.conf:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">Listen 80\r\nListen 8081<\/pre>\n<p>Once you&#8217;ve edited <kbd>apache2\/ports.conf<\/kbd>, open <kbd>sites-enabled\/xxxx.dev.conf<\/kbd> and change the port, then save and restart your server:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">$ sudo service apache2 restart<\/pre>\n<p>And voil\u00e0! I know this is an incredibly long post for a really tiny fix. I tried to detail as much as I could while including as many keywords related to the issue as possible so that hopefully people having the same type of issue as I had will be able to find this page from Google. Thanks for bearing with me!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Warning: To a non tech-savvy reader, this may probably be one of the most abstruse post titles ever. Sorry about that. Move along if you will, I promise I won&#8217;t hold it against you. Having found a dirt-simple solution to an obscure problem I&#8217;ve been having for hours, I felt that I should publish the &#8230;<a class=\"post-readmore\" href=\"https:\/\/thomasgr.im\/shares\/2013\/quick-fix-to-codeception-phpbrowser-throwing-404-errors-testing-laravel-app-on-virtual-host\/\">read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[2],"tags":[26,23,25,22,24,48,27],"class_list":["post-330","post","type-post","status-publish","format-standard","hentry","category-programming","tag-acceptance-testing","tag-apache","tag-bdd","tag-codeception","tag-laravel","tag-php","tag-webguy"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>A Quick Fix To Codeception&#039;s PhpBrowser Throwing 404 Errors Upon Testing A Laravel App On A VirtualHost - ThomasGR.IM<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/thomasgr.im\/shares\/2013\/quick-fix-to-codeception-phpbrowser-throwing-404-errors-testing-laravel-app-on-virtual-host\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"A Quick Fix To Codeception&#039;s PhpBrowser Throwing 404 Errors Upon Testing A Laravel App On A VirtualHost - ThomasGR.IM\" \/>\n<meta property=\"og:description\" content=\"Warning: To a non tech-savvy reader, this may probably be one of the most abstruse post titles ever. Sorry about that. Move along if you will, I promise I won&#8217;t hold it against you. Having found a dirt-simple solution to an obscure problem I&#8217;ve been having for hours, I felt that I should publish the ...read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/thomasgr.im\/shares\/2013\/quick-fix-to-codeception-phpbrowser-throwing-404-errors-testing-laravel-app-on-virtual-host\/\" \/>\n<meta property=\"og:site_name\" content=\"ThomasGR.IM\" \/>\n<meta property=\"article:published_time\" content=\"2013-09-10T19:47:10+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2013-09-10T20:15:13+00:00\" \/>\n<meta name=\"author\" content=\"Thomas\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/thomasgr.im\\\/shares\\\/2013\\\/quick-fix-to-codeception-phpbrowser-throwing-404-errors-testing-laravel-app-on-virtual-host\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thomasgr.im\\\/shares\\\/2013\\\/quick-fix-to-codeception-phpbrowser-throwing-404-errors-testing-laravel-app-on-virtual-host\\\/\"},\"author\":{\"name\":\"Thomas\",\"@id\":\"https:\\\/\\\/thomasgr.im\\\/shares\\\/#\\\/schema\\\/person\\\/a9f452898a055ceb0f17967802c852da\"},\"headline\":\"A Quick Fix To Codeception&#8217;s PhpBrowser Throwing 404 Errors Upon Testing A Laravel App On A VirtualHost\",\"datePublished\":\"2013-09-10T19:47:10+00:00\",\"dateModified\":\"2013-09-10T20:15:13+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/thomasgr.im\\\/shares\\\/2013\\\/quick-fix-to-codeception-phpbrowser-throwing-404-errors-testing-laravel-app-on-virtual-host\\\/\"},\"wordCount\":1003,\"commentCount\":0,\"keywords\":[\"Acceptance Testing\",\"Apache\",\"BDD\",\"Codeception\",\"Laravel\",\"PHP\",\"WebGuy\"],\"articleSection\":[\"Programming\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/thomasgr.im\\\/shares\\\/2013\\\/quick-fix-to-codeception-phpbrowser-throwing-404-errors-testing-laravel-app-on-virtual-host\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/thomasgr.im\\\/shares\\\/2013\\\/quick-fix-to-codeception-phpbrowser-throwing-404-errors-testing-laravel-app-on-virtual-host\\\/\",\"url\":\"https:\\\/\\\/thomasgr.im\\\/shares\\\/2013\\\/quick-fix-to-codeception-phpbrowser-throwing-404-errors-testing-laravel-app-on-virtual-host\\\/\",\"name\":\"A Quick Fix To Codeception's PhpBrowser Throwing 404 Errors Upon Testing A Laravel App On A VirtualHost - ThomasGR.IM\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thomasgr.im\\\/shares\\\/#website\"},\"datePublished\":\"2013-09-10T19:47:10+00:00\",\"dateModified\":\"2013-09-10T20:15:13+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/thomasgr.im\\\/shares\\\/#\\\/schema\\\/person\\\/a9f452898a055ceb0f17967802c852da\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/thomasgr.im\\\/shares\\\/2013\\\/quick-fix-to-codeception-phpbrowser-throwing-404-errors-testing-laravel-app-on-virtual-host\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/thomasgr.im\\\/shares\\\/2013\\\/quick-fix-to-codeception-phpbrowser-throwing-404-errors-testing-laravel-app-on-virtual-host\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/thomasgr.im\\\/shares\\\/2013\\\/quick-fix-to-codeception-phpbrowser-throwing-404-errors-testing-laravel-app-on-virtual-host\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/thomasgr.im\\\/shares\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"A Quick Fix To Codeception&#8217;s PhpBrowser Throwing 404 Errors Upon Testing A Laravel App On A VirtualHost\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/thomasgr.im\\\/shares\\\/#website\",\"url\":\"https:\\\/\\\/thomasgr.im\\\/shares\\\/\",\"name\":\"ThomasGR.IM\",\"description\":\"Geeky Musing\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/thomasgr.im\\\/shares\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/thomasgr.im\\\/shares\\\/#\\\/schema\\\/person\\\/a9f452898a055ceb0f17967802c852da\",\"name\":\"Thomas\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/24002a8c89532079ac75ffa31bf174b5f4b88ef34601417767fd11b3d48436b7?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/24002a8c89532079ac75ffa31bf174b5f4b88ef34601417767fd11b3d48436b7?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/24002a8c89532079ac75ffa31bf174b5f4b88ef34601417767fd11b3d48436b7?s=96&d=mm&r=g\",\"caption\":\"Thomas\"},\"sameAs\":[\"https:\\\/\\\/thomasgr.im\\\/\"],\"url\":\"https:\\\/\\\/thomasgr.im\\\/shares\\\/author\\\/thomadmin\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"A Quick Fix To Codeception's PhpBrowser Throwing 404 Errors Upon Testing A Laravel App On A VirtualHost - ThomasGR.IM","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/thomasgr.im\/shares\/2013\/quick-fix-to-codeception-phpbrowser-throwing-404-errors-testing-laravel-app-on-virtual-host\/","og_locale":"en_US","og_type":"article","og_title":"A Quick Fix To Codeception's PhpBrowser Throwing 404 Errors Upon Testing A Laravel App On A VirtualHost - ThomasGR.IM","og_description":"Warning: To a non tech-savvy reader, this may probably be one of the most abstruse post titles ever. Sorry about that. Move along if you will, I promise I won&#8217;t hold it against you. Having found a dirt-simple solution to an obscure problem I&#8217;ve been having for hours, I felt that I should publish the ...read more","og_url":"https:\/\/thomasgr.im\/shares\/2013\/quick-fix-to-codeception-phpbrowser-throwing-404-errors-testing-laravel-app-on-virtual-host\/","og_site_name":"ThomasGR.IM","article_published_time":"2013-09-10T19:47:10+00:00","article_modified_time":"2013-09-10T20:15:13+00:00","author":"Thomas","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/thomasgr.im\/shares\/2013\/quick-fix-to-codeception-phpbrowser-throwing-404-errors-testing-laravel-app-on-virtual-host\/#article","isPartOf":{"@id":"https:\/\/thomasgr.im\/shares\/2013\/quick-fix-to-codeception-phpbrowser-throwing-404-errors-testing-laravel-app-on-virtual-host\/"},"author":{"name":"Thomas","@id":"https:\/\/thomasgr.im\/shares\/#\/schema\/person\/a9f452898a055ceb0f17967802c852da"},"headline":"A Quick Fix To Codeception&#8217;s PhpBrowser Throwing 404 Errors Upon Testing A Laravel App On A VirtualHost","datePublished":"2013-09-10T19:47:10+00:00","dateModified":"2013-09-10T20:15:13+00:00","mainEntityOfPage":{"@id":"https:\/\/thomasgr.im\/shares\/2013\/quick-fix-to-codeception-phpbrowser-throwing-404-errors-testing-laravel-app-on-virtual-host\/"},"wordCount":1003,"commentCount":0,"keywords":["Acceptance Testing","Apache","BDD","Codeception","Laravel","PHP","WebGuy"],"articleSection":["Programming"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/thomasgr.im\/shares\/2013\/quick-fix-to-codeception-phpbrowser-throwing-404-errors-testing-laravel-app-on-virtual-host\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/thomasgr.im\/shares\/2013\/quick-fix-to-codeception-phpbrowser-throwing-404-errors-testing-laravel-app-on-virtual-host\/","url":"https:\/\/thomasgr.im\/shares\/2013\/quick-fix-to-codeception-phpbrowser-throwing-404-errors-testing-laravel-app-on-virtual-host\/","name":"A Quick Fix To Codeception's PhpBrowser Throwing 404 Errors Upon Testing A Laravel App On A VirtualHost - ThomasGR.IM","isPartOf":{"@id":"https:\/\/thomasgr.im\/shares\/#website"},"datePublished":"2013-09-10T19:47:10+00:00","dateModified":"2013-09-10T20:15:13+00:00","author":{"@id":"https:\/\/thomasgr.im\/shares\/#\/schema\/person\/a9f452898a055ceb0f17967802c852da"},"breadcrumb":{"@id":"https:\/\/thomasgr.im\/shares\/2013\/quick-fix-to-codeception-phpbrowser-throwing-404-errors-testing-laravel-app-on-virtual-host\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thomasgr.im\/shares\/2013\/quick-fix-to-codeception-phpbrowser-throwing-404-errors-testing-laravel-app-on-virtual-host\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/thomasgr.im\/shares\/2013\/quick-fix-to-codeception-phpbrowser-throwing-404-errors-testing-laravel-app-on-virtual-host\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/thomasgr.im\/shares\/"},{"@type":"ListItem","position":2,"name":"A Quick Fix To Codeception&#8217;s PhpBrowser Throwing 404 Errors Upon Testing A Laravel App On A VirtualHost"}]},{"@type":"WebSite","@id":"https:\/\/thomasgr.im\/shares\/#website","url":"https:\/\/thomasgr.im\/shares\/","name":"ThomasGR.IM","description":"Geeky Musing","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/thomasgr.im\/shares\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/thomasgr.im\/shares\/#\/schema\/person\/a9f452898a055ceb0f17967802c852da","name":"Thomas","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/24002a8c89532079ac75ffa31bf174b5f4b88ef34601417767fd11b3d48436b7?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/24002a8c89532079ac75ffa31bf174b5f4b88ef34601417767fd11b3d48436b7?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/24002a8c89532079ac75ffa31bf174b5f4b88ef34601417767fd11b3d48436b7?s=96&d=mm&r=g","caption":"Thomas"},"sameAs":["https:\/\/thomasgr.im\/"],"url":"https:\/\/thomasgr.im\/shares\/author\/thomadmin\/"}]}},"_links":{"self":[{"href":"https:\/\/thomasgr.im\/shares\/wp-json\/wp\/v2\/posts\/330","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thomasgr.im\/shares\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thomasgr.im\/shares\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thomasgr.im\/shares\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/thomasgr.im\/shares\/wp-json\/wp\/v2\/comments?post=330"}],"version-history":[{"count":0,"href":"https:\/\/thomasgr.im\/shares\/wp-json\/wp\/v2\/posts\/330\/revisions"}],"wp:attachment":[{"href":"https:\/\/thomasgr.im\/shares\/wp-json\/wp\/v2\/media?parent=330"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thomasgr.im\/shares\/wp-json\/wp\/v2\/categories?post=330"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thomasgr.im\/shares\/wp-json\/wp\/v2\/tags?post=330"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}