{"id":2381,"date":"2017-03-27T17:54:16","date_gmt":"2017-03-27T12:24:16","guid":{"rendered":"https:\/\/www.wikitechy.com\/technology\/?p=2381"},"modified":"2017-03-28T15:09:20","modified_gmt":"2017-03-28T09:39:20","slug":"pass-command-line-arguments","status":"publish","type":"post","link":"https:\/\/www.wikitechy.com\/technology\/pass-command-line-arguments\/","title":{"rendered":"[ Solved &#8211; 10 Answers ] JAVASCRIPT &#8211; How to pass command line arguments"},"content":{"rendered":"<p><label class=\"label label-Warning\">PROBLEM<\/label><\/p>\n<ul>\n<li>We have a web server written in Node.js that we would like to launch with a specific folder. Does not sure how to access arguments in JavaScript.<\/li>\n<\/ul>\n<h4 id=\"here-running-node-like-this\"><span style=\"color: #800000;\">Here running node like this:<\/span><\/h4>\n<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <span class=\"code-embed-name\">jQuery Code<\/span> <\/div> <pre class=\"language-javascript code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-javascript code-embed-code\">$ node server.js folder<\/code><\/pre> <\/div>\n[ad type=&#8221;banner&#8221;]\n<p>Where server.js is the code.<\/p>\n<p>$ node -h<br \/>\n<span style=\"color: #000000;\">Usage:<\/span> node [options] script.js [arguments]\n<p>How to access those arguments in JavaScript?<\/p>\n<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <span class=\"code-embed-name\">jQuery Code<\/span> <\/div> <pre class=\"language-javascript code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-javascript code-embed-code\">Javjavascript           node.js        arguments              command-line-argumentsascript<\/code><\/pre> <\/div>\n<p><label class=\"label label-info\">SOLUTION 1:<\/label><\/p>\n<p>The arguments are stored in process.argv<\/p>\n<p>process.argv is an array containing the command line arguments. The first element will be &#8216;node&#8217;, the second element will be the name of the JavaScript file. The next elements will be any additional command line arguments.<\/p>\n<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <span class=\"code-embed-name\">jQuery Code<\/span> <\/div> <pre class=\"language-javascript code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-javascript code-embed-code\">\/\/ print process.argv<br\/>process.argv.forEach(function (val, index, array) {<br\/>  console.log(index + &#039;: &#039; + val);<br\/>});<\/code><\/pre> <\/div>\n<h4 id=\"this-will-generate\"><span style=\"color: #800080;\">This will generate:<\/span><\/h4>\n<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <span class=\"code-embed-name\">jQuery Code<\/span> <\/div> <pre class=\"language-javascript code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-javascript code-embed-code\">$ node process-2.js one two=three four<br\/>0: node<br\/>1: \/Users\/mjr\/work\/node\/process-2.js<br\/>2: one<br\/>3: two=three<br\/>4: four<\/code><\/pre> <\/div>\n<p><label class=\"label label-info\">SOLUTION 2:<\/label><\/p>\n<ul>\n<li><span style=\"color: #000000;\">To normalize the arguments like a regular javascript function would receive, we do this in my node.js shell scripts:<\/span><\/li>\n<\/ul>\n<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <span class=\"code-embed-name\">jQuery Code<\/span> <\/div> <pre class=\"language-javascript code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-javascript code-embed-code\">var args = process.argv.slice(2);<\/code><\/pre> <\/div>\n<p><span style=\"color: #000000;\">Note : <\/span>The first arg is usually the path to nodejs, and the second arg is the location of the script you&#8217;re executing.<\/p>\n<p><label class=\"label label-info\">SOLUTION 3:<\/label><\/p>\n<ul>\n<li><span style=\"color: #000000;\">To use the\u00a0minimist\u00a0library. We can use node-optimist but it has since been deprecated.<\/span><\/li>\n<\/ul>\n<p><strong>Here is an example of how to use it taken straight from the minimist documentation:<\/strong><\/p>\n<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <span class=\"code-embed-name\">jQuery Code<\/span> <\/div> <pre class=\"language-javascript code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-javascript code-embed-code\">var argv = require(&#039;minimist&#039;)(process.argv.slice(2));<br\/>console.dir(argv);<\/code><\/pre> <\/div>\n<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <span class=\"code-embed-name\">jQuery Code<\/span> <\/div> <pre class=\"language-javascript code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-javascript code-embed-code\">$ node example\/parse.js -a beep -b boop<br\/>{ _: [], a: &#039;beep&#039;, b: &#039;boop&#039; }<\/code><\/pre> <\/div>\n<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <span class=\"code-embed-name\">jQuery Code<\/span> <\/div> <pre class=\"language-javascript code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-javascript code-embed-code\">$ node example\/parse.js -x 3 -y 4 -n5 -abc --beep=boop foo bar baz<br\/>{ _: [ &#039;foo&#039;, &#039;bar&#039;, &#039;baz&#039; ],<br\/>  x: 3,<br\/>  y: 4,<br\/>  n: 5,<br\/>  a: true,<br\/>  b: true,<br\/>  c: true,<br\/>  beep: &#039;boop&#039; }<\/code><\/pre> <\/div>\n<p><label class=\"label label-info\">SOLUTION 4:<\/label><\/p>\n<ul>\n<li><span style=\"color: #000000;\">Vanilla javascript argument parsing:<\/span><\/li>\n<\/ul>\n<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <span class=\"code-embed-name\">jQuery Code<\/span> <\/div> <pre class=\"language-javascript code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-javascript code-embed-code\">const args = process.argv;<br\/>console.log(args);<\/code><\/pre> <\/div>\n<h4 id=\"this-returns\"><span style=\"color: #000000;\">This returns:<\/span><\/h4>\n<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <span class=\"code-embed-name\">jQuery Code<\/span> <\/div> <pre class=\"language-javascript code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-javascript code-embed-code\">$ node process-2.js one two=three four<br\/>[&#039;node&#039;, &#039;\/Users\/dc\/node\/server.js&#039;, &#039;one&#039;, &#039;two=three&#039;, &#039;four&#039;]<\/code><\/pre> <\/div>\n<p><label class=\"label label-info\">SOLUTION 5:<\/label><\/p>\n<ul>\n<li><span style=\"color: #000000;\">This is very similar to how bash scripts access argument values.<\/span><\/li>\n<\/ul>\n<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <span class=\"code-embed-name\">jQuery Code<\/span> <\/div> <pre class=\"language-javascript code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-javascript code-embed-code\">$ node yourscript.js banana monkey<br\/><br\/>var program_name = process.argv[0]; \/\/value will be &quot;node&quot;<br\/>var script_path = process.argv[1]; \/\/value will be &quot;yourscript.js&quot;<br\/>var first_value = process.argv[2]; \/\/value will be &quot;banana&quot;<br\/>var second_value = process.argv[3]; \/\/value will be &quot;monkey&quot;<\/code><\/pre> <\/div>\n<p><label class=\"label label-info\">SOLUTION 6:<\/label><\/p>\n<ul>\n<li><span style=\"color: #000000;\">Stdio Library<\/span><\/li>\n<li><span style=\"color: #000000;\">The easiest way to parse command-line arguments in NodeJS is using the stdio module.<\/span><\/li>\n<\/ul>\n<h4 id=\"inspired-by-unix-getopt-utility-it-is-as-trivial-as-follows\"><span style=\"color: #000000;\">Inspired by UNIX getopt utility, it is as trivial as follows:<\/span><\/h4>\n<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <span class=\"code-embed-name\">jQuery Code<\/span> <\/div> <pre class=\"language-javascript code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-javascript code-embed-code\">var stdio = require(&#039;stdio&#039;);<br\/>var ops = stdio.getopt({<br\/>    &#039;check&#039;: {key: &#039;c&#039;, args: 2, description: &#039;What this option means&#039;},<br\/>    &#039;map&#039;: {key: &#039;m&#039;, description: &#039;Another description&#039;},<br\/>    &#039;kaka&#039;: {args: 1, mandatory: true},<br\/>    &#039;ooo&#039;: {key: &#039;o&#039;}<br\/>});<\/code><\/pre> <\/div>\n<p style=\"top: 130px;\">[ad type=&#8221;banner&#8221;]\n<h4 id=\"if-you-run-the-previous-code-with-this-command\"><span style=\"color: #000000;\">If you run the previous code with this command:<\/span><\/h4>\n<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <span class=\"code-embed-name\">jQuery Code<\/span> <\/div> <pre class=\"language-javascript code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-javascript code-embed-code\">node &lt;your_script.js&gt; -c 23 45 --map -k 23 file1 file2<\/code><\/pre> <\/div>\n<h4 id=\"then-ops-object-will-be-as-follows\"><span style=\"color: #000000;\">Then ops object will be as follows:<\/span><\/h4>\n<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <span class=\"code-embed-name\">jQuery Code<\/span> <\/div> <pre class=\"language-javascript code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-javascript code-embed-code\">{ check: [ &#039;23&#039;, &#039;45&#039; ],<br\/>  args: [ &#039;file1&#039;, &#039;file2&#039; ],<br\/>  map: true,<br\/>  kaka: &#039;23&#039; }<\/code><\/pre> <\/div>\n<h4 id=\"so-you-can-use-it-as-you-want-for-instance\"><span style=\"color: #000000;\">So you can use it as you want. For instance:<\/span><\/h4>\n<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <span class=\"code-embed-name\">jQuery Code<\/span> <\/div> <pre class=\"language-javascript code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-javascript code-embed-code\">if (ops.kaka &amp;&amp; ops.check) {<br\/>    console.log(ops.kaka + ops.check[0]);<br\/>}<\/code><\/pre> <\/div>\n<p>Grouped options are also supported, so you can write -om instead of -o -m.<\/p>\n<p>Furthermore, stdio can generate a help\/usage output automatically.<\/p>\n<h4 id=\"if-we-call-ops-printhelp-we-will-get-the-following\"><span style=\"color: #000000;\">If we call ops.printHelp() we will get the following:<\/span><\/h4>\n<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <span class=\"code-embed-name\">jQuery Code<\/span> <\/div> <pre class=\"language-javascript code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-javascript code-embed-code\">USAGE: node something.js [--check &lt;ARG1&gt; &lt;ARG2&gt;] [--kaka] [--ooo] [--map]<br\/>  -c, --check &lt;ARG1&gt; &lt;ARG2&gt;   What this option means (mandatory)<br\/>  -k, --kaka                  (mandatory)<br\/>  --map                       Another description<br\/>  -o, --ooo<\/code><\/pre> <\/div>\n<p style=\"top: 130px;\">[ad type=&#8221;banner&#8221;]\n<p>The previous message is shown also if a mandatory option is not given (preceded by the error message) or if it is mispecified (for instance, if you specify a single arg for an option and it needs 2).<\/p>\n<h4 id=\"you-can-install-stdio-module-using-npm\"><span style=\"color: #000000;\">You can install stdio module using NPM:<\/span><\/h4>\n<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <span class=\"code-embed-name\">jQuery Code<\/span> <\/div> <pre class=\"language-javascript code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-javascript code-embed-code\">npm install stdio<\/code><\/pre> <\/div>\n<p><label class=\"label label-info\">SOLUTION 7:<\/label><\/p>\n<ul>\n<li>\n<h5 id=\"if-your-script-is-myscript-js-and-you-want-to-pass-the-first-and-last-name-wiki-techy-as-arguments-like-below\"><span style=\"color: #000000;\"><strong>If your script is myScript.js and you want to pass the first and last name, \u2018Wiki Techy&#8217;, as arguments like below:<\/strong><\/span><\/h5>\n<\/li>\n<\/ul>\n<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <span class=\"code-embed-name\">jQuery Code<\/span> <\/div> <pre class=\"language-javascript code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-javascript code-embed-code\">node myScript.js Wiki Techy<\/code><\/pre> <\/div>\n<h4 id=\"then-your-script-is-written-as-follows\"><span style=\"color: #000000;\">Then your script is written as follows:<\/span><\/h4>\n<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <span class=\"code-embed-name\">jQuery Code<\/span> <\/div> <pre class=\"language-javascript code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-javascript code-embed-code\">var firstName = process.argv[2]; \/\/ Will be set to \u2018Wiki&#039;<br\/>var lastName = process.argv[3]; \/\/ Will be set to \u2018Techy&#039;<\/code><\/pre> <\/div>\n<p><label class=\"label label-info\">SOLUTION 8:<\/label><\/p>\n<ul>\n<li><strong><span style=\"color: #000000;\">Here is an another solution:<\/span><\/strong><\/li>\n<\/ul>\n<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <span class=\"code-embed-name\">jQuery Code<\/span> <\/div> <pre class=\"language-javascript code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-javascript code-embed-code\">#!\/usr\/bin\/env node<br\/>var argv = require(&#039;yargs&#039;).argv;<br\/>console.log(&#039;(%d,%d)&#039;, argv.x, argv.y);<br\/>console.log(argv._);<\/code><\/pre> <\/div>\n<p>Output is here (it reads options with dashes etc, short and long, numeric etc).<\/p>\n<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <span class=\"code-embed-name\">jQuery Code<\/span> <\/div> <pre class=\"language-javascript code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-javascript code-embed-code\">$ .\/nonopt.js -x 6.82 -y 3.35 rum<br\/>(6.82,3.35)<br\/>[ &#039;rum&#039; ] <br\/>$ .\/nonopt.js &quot;me hearties&quot; -x 0.54 yo -y 1.12 ho<br\/>(0.54,1.12)<br\/>[ &#039;me hearties&#039;, &#039;yo&#039;, &#039;ho&#039; ]<\/code><\/pre> <\/div>\n<p><label class=\"label label-info\">SOLUTION 9:<\/label><\/p>\n<ul>\n<li>\n<h5 id=\"we-can-parse-all-arguments-and-check-if-they-exist\"><span style=\"color: #000000;\">we can parse all arguments and check if they exist.<\/span><\/h5>\n<\/li>\n<\/ul>\n<h4 id=\"file-parse-cli-arguments-js\"><span style=\"color: #000000;\">file: parse-cli-arguments.js:<\/span><\/h4>\n<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <span class=\"code-embed-name\">jQuery Code<\/span> <\/div> <pre class=\"language-javascript code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-javascript code-embed-code\">module.exports = function(requiredArguments){<br\/>    var arguments = {};<br\/><br\/>    for (var index = 0; index &lt; process.argv.length; index++) {<br\/>        var re = new RegExp(&#039;--([A-Za-z0-9_]+)=([A\/-Za-z0-9_]+)&#039;),<br\/>            matches = re.exec(process.argv[index]);<br\/><br\/>        if(matches !== null) {<br\/>            arguments[matches[1]] = matches[2];<br\/>        }<br\/>    }<\/code><\/pre> <\/div>\n<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <span class=\"code-embed-name\">jQuery Code<\/span> <\/div> <pre class=\"language-javascript code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-javascript code-embed-code\">for (var index = 0; index &lt; requiredArguments.length; index++) {<br\/>        if (arguments[requiredArguments[index]] === undefined) {<br\/>            throw(requiredArguments[index] + &#039; not defined. Please add the argument with --&#039; + requiredArguments[index]);<br\/>        }<br\/>    }<br\/><br\/>    return arguments;<br\/>}<\/code><\/pre> <\/div>\n<h4 id=\"than-just-do\"><span style=\"color: #000000;\">Than just do:<\/span><\/h4>\n<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <span class=\"code-embed-name\">jQuery Code<\/span> <\/div> <pre class=\"language-javascript code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-javascript code-embed-code\">var arguments = require(&#039;.\/parse-cli-arguments&#039;)([&#039;foo&#039;, &#039;bar&#039;, &#039;xpto&#039;]);<\/code><\/pre> <\/div>\n<p><label class=\"label label-info\">SOLUTION 10:<\/label><\/p>\n<ul>\n<li><span style=\"color: #000000;\">npm install ps-grab<\/span><\/li>\n<\/ul>\n<h4 id=\"if-we-want-to-run-something-like-this\"><span style=\"color: #000000;\">If we want to run something like this :<\/span><\/h4>\n<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <span class=\"code-embed-name\">jQuery Code<\/span> <\/div> <pre class=\"language-javascript code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-javascript code-embed-code\">node greeting.js --user Wikitechy --website http:\/\/www.wikitechy.com<\/code><\/pre> <\/div>\n<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <span class=\"code-embed-name\">jQuery Code<\/span> <\/div> <pre class=\"language-javascript code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-javascript code-embed-code\">var grab=require(&#039;ps-grab&#039;);<br\/>grab(&#039;--username&#039;) \/\/ return \u2018Wikitechy&#039;<br\/>grab(&#039;--action&#039;) \/\/ return &#039;http:\/\/www.wikitechy.com&#039;<\/code><\/pre> <\/div>\n<h4 id=\"or-something-like\"><span style=\"color: #000000;\">Or something like :<\/span><\/h4>\n<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <span class=\"code-embed-name\">jQuery Code<\/span> <\/div> <pre class=\"language-javascript code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-javascript code-embed-code\">node vbox.js -OS redhat -VM template-12332 ;<\/code><\/pre> <\/div>\n<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <span class=\"code-embed-name\">jQuery Code<\/span> <\/div> <pre class=\"language-javascript code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-javascript code-embed-code\">var grab=require(&#039;ps-grab&#039;);<br\/>grab(&#039;-OS&#039;) \/\/ return &#039;redhat&#039;<br\/>grab(&#039;-VM&#039;) \/\/ return &#039;template-12332<\/code><\/pre> <\/div>\n","protected":false},"excerpt":{"rendered":"<p>PROBLEM We have a web server written in Node.js that we would like to launch with a specific folder. Does not sure how to access arguments in JavaScript. Here running node like this: [ad type=&#8221;banner&#8221;] Where server.js is the code. $ node -h Usage: node [options] script.js [arguments] How to access those arguments in JavaScript? [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[275],"tags":[5599,5612,5600,5609,5610,5611,5608,5607,5604,5606,5603,5605,5601,5598,5602],"class_list":["post-2381","post","type-post","status-publish","format-standard","hentry","category-javascript","tag-c-command-line-arguments","tag-c-command-line-arguments-integer","tag-command-line-arguments-in-c","tag-command-line-arguments-in-c-example-with-output","tag-command-line-arguments-in-c-pdf","tag-command-line-arguments-in-python","tag-command-line-arguments-java","tag-command-line-parameters-tutorial-c","tag-command-line-arguments","tag-command-line-arguments-the-java-tutorials-essential-classes","tag-handling-command-line-arguments","tag-how-can-i-pass-a-command-line-argument-into-a-shell-script","tag-javascript-how-do-i-pass-command-line-arguments","tag-related-queries-java-command-line-arguments","tag-windows-how-to-pass-command-line-parameters-to-a-batch-file"],"_links":{"self":[{"href":"https:\/\/www.wikitechy.com\/technology\/wp-json\/wp\/v2\/posts\/2381","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.wikitechy.com\/technology\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.wikitechy.com\/technology\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.wikitechy.com\/technology\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.wikitechy.com\/technology\/wp-json\/wp\/v2\/comments?post=2381"}],"version-history":[{"count":0,"href":"https:\/\/www.wikitechy.com\/technology\/wp-json\/wp\/v2\/posts\/2381\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.wikitechy.com\/technology\/wp-json\/wp\/v2\/media?parent=2381"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.wikitechy.com\/technology\/wp-json\/wp\/v2\/categories?post=2381"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.wikitechy.com\/technology\/wp-json\/wp\/v2\/tags?post=2381"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}