{"id":32655,"date":"2025-05-13T23:33:18","date_gmt":"2025-05-14T02:33:18","guid":{"rendered":"https:\/\/mastertrend.info\/?p=32655"},"modified":"2026-04-28T14:50:55","modified_gmt":"2026-04-28T17:50:55","slug":"create-your-first-web-app-2","status":"publish","type":"post","link":"https:\/\/mastertrend.info\/en\/crea-tu-primera-app-web\/","title":{"rendered":"Create your first web app and master programming without stress \ud83d\ude80\ud83d\udcbb"},"content":{"rendered":"<h2 class=\"table-content-link\">Create your first web app: notes + counter easy and fast \ud83d\udcdd\u26a1<\/h2>\n<p>Getting started with programming can seem overwhelming, with so many languages, frameworks, and methodologies to consider. Sometimes it might seem easier to delegate everything to an AI. Don&#039;t worry! Programming for the web can be simple, fun, and best of all, completely free! \ud83c\udf10\u2728<\/p>\n<h2 id=\"what-you-rsquo-ll-build\">What You Are Going To Build<\/h2>\n<p>By following this tutorial, you&#039;ll create a simple web application to store text notes and count characters and words.<\/p>\n<p>The app will retain data, so it&#039;ll remember the text when you reload or reopen the page. This means you&#039;ll have a convenient way to save any text you want to reference later, such as addresses, URLs, etc. \ud83d\udcc4\ud83d\udd17<\/p>\n<figure><picture><source media=\"(min-width: 1024px)\" data-=\"\" \/><source media=\"(min-width: 768px)\" data-=\"\" \/><source media=\"(min-width: 481px)\" data-=\"\" \/><source media=\"(min-width: 0px)\" data-=\"\" \/><img decoding=\"async\" style=\"display: block; height: auto; max-width: 100%;\" src=\"https:\/\/mastertrend.info\/wp-content\/uploads\/2025\/01\/Crea-Tu-Primera-Aplicacion-Web-Una-App-de-Notas-Sencilla.png\" alt=\"An example of a simple text-based web application that displays notes, including a calendar entry and a list of URLs.\" width=\"960\" height=\"569\" title=\"\"> <\/picture><\/figure>\n<p>It also counts characters and words, which is a good introduction to string (text) manipulation. Of course, the app is very simple\u2014that&#039;s the point! But with this tutorial, you&#039;ll learn the basics of developing a web app, and then the world will be your oyster. \ud83e\uddaa\ud83d\udcbb<\/p>\n<h2 id=\"how-you-rsquo-ll-build-it\">How Are You Going to Build It?<\/h2>\n<p>Although web applications are very diverse, they typically involve three main technologies: HTML, CSS, and JavaScript. It&#039;s essential that you understand their roles before you begin. \ud83d\udcda<\/p>\n<ul>\n<li>HTML: Hypertext Markup Language allows you to define the structure of your content. With it, you can mark up text based on its meaning, indicating whether it&#039;s a paragraph, a heading, or an item in a list, for example.<\/li>\n<li>CSS: Cascading Style Sheets allow you to style your content. Using this language, you can color a paragraph green, make all your links bold, or position a sidebar next to your main article. \ud83c\udfa8<\/li>\n<li>JavaScript: With this programming language, you can add functionality to your website. You can make buttons show or hide parts of your document when clicked, or implement a full-featured word processor or video game. \ud83c\udfae<\/li>\n<\/ul>\n<p>He <a href=\"https:\/\/web.dev\" target=\"_blank\" rel=\"noopener noreferrer\">website.dev<\/a> (escrito por miembros del equipo de Chrome) y MDN, la Red de Desarrolladores de Mozilla, son dos excelentes fuentes de informaci\u00f3n sobre tecnolog\u00edas web fundamentales.<\/p>\n<figure><picture><source media=\"(min-width: 1024px)\" data-=\"\" \/><source media=\"(min-width: 768px)\" data-=\"\" \/><source media=\"(min-width: 481px)\" data-=\"\" \/><source media=\"(min-width: 0px)\" data-=\"\" \/><img decoding=\"async\" style=\"display: block; height: auto; max-width: 100%;\" src=\"https:\/\/mastertrend.info\/wp-content\/uploads\/2025\/01\/1736598858_798_Crea-Tu-Primera-Aplicacion-Web-Una-App-de-Notas-Sencilla.png\" alt=\"The homepage of the web.dev site with learning resources for HTML, CSS, and JavaScript.\" width=\"1388\" height=\"734\" title=\"\"> <\/picture><\/figure>\n<h2 id=\"the-app-structure\">The Structure of the App<\/h2>\n<p>The app you&#039;ll build will consist of three simple files: index.html, styles.css, and script.js. \ud83d\uddc2\ufe0f<\/p>\n<p>There are no special requirements to run the app; you just need a web browser. There&#039;s no backend functionality, so you don&#039;t need a scripting language like PHP or a local web server. Once you&#039;re done, you can open the <a title=\"How to set up a local Linux web server on Windows 11\" href=\"https:\/\/mastertrend.info\/en\/local-linux-web-server\/\" target=\"_blank\" rel=\"noopener\" data-wpil-monitor-id=\"5749\">index.html file directly in your browser<\/a> and everything will work out. \ud83d\ude0a<\/p>\n<p>It&#039;s important to mention that this app saves your text without writing it to a specific file on disk, since JavaScript can&#039;t access the file system. It uses the Web Storage API, a powerful alternative to cookies. \ud83c\udf6a\ud83d\udcbe<\/p>\n<h2 id=\"how-to-build-the-note-taker\">How to Build the Note Taker<\/h2>\n<p>Create the following three files in the same directory and then open index.html in a web browser. Alternatively, you can download the files from <a href=\"https:\/\/github.com\/bobbykjack\/text\" target=\"_blank\" rel=\"noopener\">this GitHub repository<\/a>. \ud83d\udce5<\/p>\n<h3 id=\"building-the-structure-with-html\">Building the Structure with HTML<\/h3>\n<p>The index.html file defines the structure of your app&#039;s content in HTML. It includes references to the other two files so a browser can combine them into the final product.<\/p>\n<p>Like all HTML documents, the top-level structure includes a head section containing metadata and a body section containing the actual content that will appear on the page:<\/p>\n<pre><code class=\"hljs html\"><span class=\"hljs-meta\">html<\/span>&gt;\r\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">html<\/span>&gt;<\/span>\r\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">head<\/span>&gt;<\/span>\r\n    ...\r\n<span class=\"hljs-tag\"><span class=\"hljs-name\">head<\/span>&gt;<\/span><\/code><\/pre>\n<p><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">body<\/span>&gt;<\/span><br \/>\n&#8230;<br \/>\n<span class=\"hljs-tag\"><span class=\"hljs-name\">body<\/span>&gt;<\/span><br \/>\n<span class=\"hljs-tag\"><span class=\"hljs-name\">html<\/span>&gt;<\/span><\/p>\n<pre><code class=\"hljs html\"><\/code><\/pre>\n<pre><code class=\"hljs html\"><\/code><\/pre>\n<p>The metadata in the head is very brief, with just a page title (which appears in your browser&#039;s title bar) and a reference to the styles.css file:<\/p>\n<pre><code class=\"hljs html\">    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">title<\/span>&gt;<\/span>Text<span class=\"hljs-tag\"><span class=\"hljs-name\">title<\/span>&gt;<\/span>\r\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">link<\/span> <span class=\"hljs-attr\">rel<\/span>=<span class=\"hljs-string\">&quot;stylesheet&quot;<\/span> <span class=\"hljs-attr\">href<\/span>=<span class=\"hljs-string\">&quot;styles.css&quot;<\/span> \/&gt;<\/span>\r\n<\/code><\/pre>\n<p>The body is more complicated, but there are only a few important parts:<\/p>\n<pre><code class=\"hljs html\">    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">div<\/span> <span class=\"hljs-attr\">id<\/span>=<span class=\"hljs-string\">&quot;counter&quot;<\/span>&gt;<\/span>\r\n        words: <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">span<\/span> <span class=\"hljs-attr\">id<\/span>=<span class=\"hljs-string\">&quot;words&quot;<\/span>&gt;<\/span>0<span class=\"hljs-tag\"><span class=\"hljs-name\">span<\/span>&gt;<\/span>\r\n        \/ characters: <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">span<\/span> <span class=\"hljs-attr\">id<\/span>=<span class=\"hljs-string\">&quot;chars&quot;<\/span>&gt;<\/span>0<span class=\"hljs-tag\"><span class=\"hljs-name\">span<\/span>&gt;<\/span>\r\n    <span class=\"hljs-tag\"><span class=\"hljs-name\">div<\/span>&gt;<\/span><\/code><\/pre>\n<p><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">textarea<\/span> <span class=\"hljs-attr\">id<\/span>=<span class=\"hljs-string\">\u00abtext\u00bb<\/span> <span class=\"hljs-attr\">autofocus<\/span>=<span class=\"hljs-string\">\u00ab1\u00bb<\/span>&gt;<\/span><span class=\"hljs-tag\"><span class=\"hljs-name\">textarea<\/span>&gt;<\/span><\/p>\n<pre><code class=\"hljs html\"><\/code><\/pre>\n<p><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">script<\/span> <span class=\"hljs-attr\">src<\/span>=<span class=\"hljs-string\">\u00abscript.js\u00bb<\/span>&gt;<\/span><span class=\"hljs-tag\"><span class=\"hljs-name\">script<\/span>&gt;<\/span><\/p>\n<pre><code class=\"hljs html\"><\/code><\/pre>\n<pre><code class=\"hljs html\"><\/code><\/pre>\n<p>The div element contains the app&#039;s word and character count. It will be located at the top of the web app and will update whenever the text changes.<\/p>\n<p>Note the id attributes, which are vital to the operation. The value of an id must be unique so the app can use it to identify a specific element. Doing this can help us style these elements and also target them when adding functionality.<\/p>\n<p>The textarea is a built-in form element that allows you to type simple text in a browser. With the autofocus attribute, it&#039;s ready to type as soon as the page loads. Finally, the page references the JavaScript file, script.js.<\/p>\n<p>At this point, you can open the index.html file in a browser. It won&#039;t do anything right now, and it won&#039;t even look good, but it&#039;s helpful to test your app at each stage to make sure the basics work as you expect.<\/p>\n<figure><picture><source media=\"(min-width: 1024px)\" data-=\"\" \/><source media=\"(min-width: 768px)\" data-=\"\" \/><source media=\"(min-width: 481px)\" data-=\"\" \/><source media=\"(min-width: 0px)\" data-=\"\" \/><img decoding=\"async\" style=\"display: block; height: auto; max-width: 100%;\" src=\"https:\/\/mastertrend.info\/wp-content\/uploads\/2025\/01\/1736598858_678_Crea-Tu-Primera-Aplicacion-Web-Una-App-de-Notas-Sencilla.png\" alt=\"A view of the note-taking web app with default browser styles, showing everything grouped in the top left corner.\" width=\"960\" height=\"569\" title=\"\"> <\/picture><\/figure>\n<h3 id=\"making-things-look-good-with-css\">Making Them Look Good With CSS<\/h3>\n<p>CSS allows you to style parts of your web page by targeting those parts and specifying values for properties like font-size and background-color. This sample app doesn&#039;t need a very refined design because its interface is so basic. However, we can smooth out the rough edges with a touch of style. \ud83c\udfa8\u2728<\/p>\n<p>First, style the body to define the overall design:<\/p>\n<pre><code class=\"hljs css\"><span class=\"hljs-selector-tag\">body<\/span> {\r\n    <span class=\"hljs-selector-tag\">margin<\/span>: 0;\r\n    <span class=\"hljs-selector-tag\">padding<\/span>: 0;\r\n    <span class=\"hljs-selector-tag\">display<\/span>: <span class=\"hljs-selector-tag\">grid<\/span>;\r\n    <span class=\"hljs-selector-tag\">min-height<\/span>: 100<span class=\"hljs-selector-tag\">vh<\/span>;\r\n    <span class=\"hljs-selector-tag\">grid-template-rows<\/span>: <span class=\"hljs-selector-tag\">min-content<\/span> 1<span class=\"hljs-selector-tag\">fr<\/span>;\r\n}\r\n<\/code><\/pre>\n<p>Este CSS utiliza la disposici\u00f3n en cuadr\u00edcula para posicionar los conteos de palabras y caracteres en una fila estrecha sobre el textarea. La propiedad grid-template-rows especifica que la fila del conteo debe ser lo m\u00e1s corta posible (min-content) y el textarea debe llenar el espacio restante (1fr).<\/p>\n<p>The counter row has a basic style to differentiate it from the rest of the text, mainly through its background:<\/p>\n<pre><code class=\"hljs css\"><span class=\"hljs-selector-id\">#counter<\/span> {\r\n    <span class=\"hljs-selector-tag\">font-family<\/span>: <span class=\"hljs-selector-tag\">sans-serif<\/span>;\r\n    <span class=\"hljs-selector-tag\">background-color<\/span>: <span class=\"hljs-selector-id\">#f7f7f7<\/span>;\r\n    <span class=\"hljs-selector-tag\">text-align<\/span>: <span class=\"hljs-selector-tag\">center<\/span>;\r\n    <span class=\"hljs-selector-tag\">width<\/span>: 100%;\r\n    <span class=\"hljs-selector-tag\">padding<\/span>: 0<span class=\"hljs-selector-class\">.5em<\/span> 0;\r\n}\r\n<\/code><\/pre>\n<p>Finally, the text area is styled to display legible text with plenty of room to breathe. The line separating the counts from the text is actually the top border of this text area.<\/p>\n<pre><code class=\"hljs css\"><span class=\"hljs-selector-tag\">textarea<\/span> {\r\n    <span class=\"hljs-selector-tag\">width<\/span>: 100%;\r\n    <span class=\"hljs-selector-tag\">height<\/span>: 100%;\r\n    <span class=\"hljs-selector-tag\">font-size<\/span>: 16<span class=\"hljs-selector-tag\">pt<\/span>;\r\n    <span class=\"hljs-selector-tag\">padding<\/span>: 1<span class=\"hljs-selector-tag\">in<\/span>;\r\n    <span class=\"hljs-selector-tag\">box-sizing<\/span>: <span class=\"hljs-selector-tag\">border-box<\/span>;\r\n    <span class=\"hljs-selector-tag\">outline<\/span>: 0;\r\n    <span class=\"hljs-selector-tag\">border<\/span>: <span class=\"hljs-selector-tag\">none<\/span>;\r\n    <span class=\"hljs-selector-tag\">border-top<\/span>: 1<span class=\"hljs-selector-tag\">px<\/span> <span class=\"hljs-selector-tag\">solid<\/span> <span class=\"hljs-selector-id\">#999<\/span>;\r\n}<\/code><\/pre>\n<figure><picture><source media=\"(min-width: 1024px)\" data-=\"\" \/><source media=\"(min-width: 768px)\" data-=\"\" \/><source media=\"(min-width: 481px)\" data-=\"\" \/><source media=\"(min-width: 0px)\" data-=\"\" \/><img decoding=\"async\" style=\"display: block; height: auto; max-width: 100%;\" src=\"https:\/\/mastertrend.info\/wp-content\/uploads\/2025\/01\/1736598859_152_Crea-Tu-Primera-Aplicacion-Web-Una-App-de-Notas-Sencilla.png\" alt=\"The note-taking app with custom styles displays the tally bar at the top with a full-size text area below.\" width=\"960\" height=\"569\" title=\"\"> <\/picture><\/figure>\n<h3 id=\"adding-functionality-with-javascript\">Adding Functionality with JavaScript<\/h3>\n<p>With the structure and style in place, you&#039;re ready to add functionality: the code that makes this simple app actually do something. \ud83d\udee0\ufe0f<\/p>\n<p>Before you start writing even the simplest code, it&#039;s a good idea to understand what you want it to do. In this case, there are just a couple of general requirements:<\/p>\n<ul>\n<li>Save the entered text and reload it when necessary.<\/li>\n<li>Update character and word counts to provide real-time statistics. \ud83d\udcca<\/li>\n<\/ul>\n<p>Both requirements involve updating elements in the document. So the script begins by obtaining references to these nodes using the getElementById method:<\/p>\n<pre><code class=\"hljs js\"><span class=\"hljs-keyword\">const<\/span> words = <span class=\"hljs-built_in\">document<\/span>.getElementById(<span class=\"hljs-string\">&quot;words&quot;<\/span>);\r\n<span class=\"hljs-keyword\">const<\/span> chars = <span class=\"hljs-built_in\">document<\/span>.getElementById(<span class=\"hljs-string\">&quot;chars&quot;<\/span>);\r\n<span class=\"hljs-keyword\">const<\/span> textarea = <span class=\"hljs-built_in\">document<\/span>.getElementById(<span class=\"hljs-string\">&quot;text&quot;<\/span>);\r\n<\/code><\/pre>\n<p>Note that words, chars, and text are the IDs of their respective elements in the document, assigned in the HTML file with the id attribute.<\/p>\n<p>Next, we need the app to react when the text is changed:<\/p>\n<pre><code class=\"hljs js\">textarea.addEventListener(<span class=\"hljs-string\">&quot;input&quot;<\/span>, <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span>(<span class=\"hljs-params\">ev<\/span>) <\/span>{ localStorage.setItem(<span class=\"hljs-string\">&quot;text&quot;<\/span>, ev.target.value); update_counts(ev.target.value); });\r\n<\/code><\/pre>\n<p>An event listener is a function that JavaScript will automatically execute when a certain event occurs. In this case, we attach a listener to the textarea node, which executes when the &quot;input&quot; event occurs. That is, when someone interacts with the textarea.<\/p>\n<p>Next, we use the Web Storage API to save the current contents of the textarea, which comes from ev.target.value. In this structure, ev is an object representing the event that triggered the listener, ev.target is the node that received the event, and ev.target.value is the text of that textarea.<\/p>\n<p>The setItem method takes two parameters: a key name to associate with the data and the actual data to store.<\/p>\n<p>Next, we call update_counts(), passing the same text. We&#039;ll explain that function in a moment.<\/p>\n<p>Now that we&#039;re saving the text, you&#039;ll want to load it again when the app opens or reloads. We can take care of that using another listener:<\/p>\n<pre><code class=\"hljs js\"><span class=\"hljs-built_in\">window<\/span>.addEventListener(<span class=\"hljs-string\">&quot;load&quot;<\/span>, <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span>(<span class=\"hljs-params\">ev<\/span>) <\/span>{\r\n    <span class=\"hljs-keyword\">var<\/span> text = localStorage.getItem(<span class=\"hljs-string\">&quot;text&quot;<\/span>); textarea.value = text; update_counts(text); });\r\n<\/code><\/pre>\n<p>This listener handles the load event that occurs on the window object, a top-level representation of the browser window. When the window loads, a call to getItem() returns the stored text value from local storage. This code then sets the value of the textarea to the loaded text and, like the previous listener, calls update_counts() with this text.<\/p>\n<p>The remaining work is done in the update_counts() function which looks like this:<\/p>\n<pre><code class=\"hljs js\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span>\u00a0<span class=\"hljs-title\">update_counts<\/span>(<span class=\"hljs-params\">text<\/span>) <\/span>{ chars.innerHTML = text.length; words.innerHTML = text.split(<span class=\"hljs-string\">' '<\/span>).length; }\r\n<\/code><\/pre>\n<p>Unlike a textarea, regular text doesn&#039;t have a value property, so we set the innerHTML property instead. The length property of a string is a simple read-only property that gives us the number of characters.<\/p>\n<p>text.split(&#039; &#039;) splits the string at the space characters, returning the result as an array of strings. Like strings, arrays have a length property that gives the number of elements in an array.<\/p>\n<p>If you test this code, however, you might notice a couple of errors:<\/p>\n<ol>\n<li>It will not count a word by itself on a line correctly, as there are no space characters around it.<\/li>\n<li>With no text at all, it will report a single word because of how split works.<\/li>\n<\/ol>\n<p>To solve the first problem, you can split on a regular expression (\\s means &quot;a blank character&quot;) instead of a space. To solve the second, filter out empty strings from the result:<\/p>\n<pre><code class=\"hljs js\">    words.innerHTML = text.split(<span class=\"hljs-regexp\">\/\\s\/<\/span>).filter(<span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span>(<span class=\"hljs-params\">n<\/span>) <\/span>{ <span class=\"hljs-keyword\">return<\/span> n != <span class=\"hljs-string\">''<\/span>; }).length;\r\n<\/code><\/pre>\n<p>If you don&#039;t fully understand that line, check out the MDN pages for <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/String\/split\" target=\"_blank\" rel=\"noopener noreferrer\">split<\/a> and <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Array\/filter\" target=\"_blank\" rel=\"noopener noreferrer\">filter<\/a>.<\/p>\n<figure><picture><source media=\"(min-width: 1024px)\" data-=\"\" \/><source media=\"(min-width: 768px)\" data-=\"\" \/><source media=\"(min-width: 481px)\" data-=\"\" \/><source media=\"(min-width: 0px)\" data-=\"\" \/><img decoding=\"async\" style=\"display: block; height: auto; max-width: 100%;\" src=\"https:\/\/mastertrend.info\/wp-content\/uploads\/2025\/01\/1736598859_129_Crea-Tu-Primera-Aplicacion-Web-Una-App-de-Notas-Sencilla.png\" alt=\"The web application with sample text, showing accurate character and word counts.\" width=\"960\" height=\"569\" title=\"\"> <\/picture><\/figure>\n<hr \/>\n<p>You can build many useful web applications with just a few files. You can also extend this simple notes app to add more functionality. For example, you can use the <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/Window\/location\" target=\"_blank\" rel=\"noopener\" data-schema-attribute=\"mentions\">window.location property<\/a> to retrieve the current URL and support multiple notes by varying the name you pass to localStorage.setItem. \ud83d\uddd2\ufe0f\ud83c\udf0d<\/p>","protected":false},"excerpt":{"rendered":"<p>Create your first web app and save notes with a word counter. Learn easily, quickly, and for free! \ud83c\udf10\ud83d\udd8b\ufe0f\u2728<\/p>","protected":false},"author":1,"featured_media":49198,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ai_generated_summary":"","iawp_total_views":39,"jnews-multi-image_gallery":[],"jnews_single_post":[],"jnews_primary_category":[],"jnews_social_meta":[],"jnews_review":[],"enable_review":"","type":"","name":"","summary":"","brand":"","sku":"","good":[],"bad":[],"score_override":"","override_value":"","rating":[],"price":[],"jnews_override_counter":[],"footnotes":""},"categories":[1435],"tags":[1445,1558],"class_list":["post-32655","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutoriales","tag-evergreencontent","tag-techtips"],"_links":{"self":[{"href":"https:\/\/mastertrend.info\/en\/wp-json\/wp\/v2\/posts\/32655","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mastertrend.info\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mastertrend.info\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mastertrend.info\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mastertrend.info\/en\/wp-json\/wp\/v2\/comments?post=32655"}],"version-history":[{"count":0,"href":"https:\/\/mastertrend.info\/en\/wp-json\/wp\/v2\/posts\/32655\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/mastertrend.info\/en\/wp-json\/wp\/v2\/media\/49198"}],"wp:attachment":[{"href":"https:\/\/mastertrend.info\/en\/wp-json\/wp\/v2\/media?parent=32655"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mastertrend.info\/en\/wp-json\/wp\/v2\/categories?post=32655"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mastertrend.info\/en\/wp-json\/wp\/v2\/tags?post=32655"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}