{"id":2556,"date":"2023-05-27T20:25:47","date_gmt":"2023-05-27T11:25:47","guid":{"rendered":"http:\/\/attacktube.com\/?p=2556"},"modified":"2023-06-08T11:55:09","modified_gmt":"2023-06-08T02:55:09","slug":"%e3%80%90node-js%e3%80%91https%e3%82%af%e3%83%a9%e3%82%a4%e3%82%a2%e3%83%b3%e3%83%88post%e3%83%aa%e3%82%af%e3%82%a8%e3%82%b9%e3%83%88%e3%81%9d%e3%81%ae2","status":"publish","type":"post","link":"https:\/\/attacktube.com\/?p=2556","title":{"rendered":"\u3010Node.js\u3011https\u30af\u30e9\u30a4\u30a2\u30f3\u30c8(POST\u30ea\u30af\u30a8\u30b9\u30c8)\u305d\u306e2"},"content":{"rendered":"\n<p>http\u30af\u30e9\u30a4\u30a2\u30f3\u30c8(POST\u30ea\u30af\u30a8\u30b9\u30c8)\u3068\u306f\u3001Node.js\u3067\u30b5\u30fc\u30d0\u30fc\u306eURL\u306bPOST\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u9001\u308b\u3002<br>\u30d6\u30e9\u30a6\u30b6\u3067\u30b5\u30fc\u30d0\u30fc\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u5834\u5408\u306fPOST\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u30b5\u30fc\u30d0\u30fc\u306b\u9001\u3063\u3066\u3044\u308b\u3002<br>\u3053\u306ePOST\u30ea\u30af\u30a8\u30b9\u30c8\u3092Node.js\u3067\u884c\u3046\u3002<br>\u3053\u306ePOST\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u9001\u4fe1\u3059\u308b\u3068\u304d\u306b\u30c7\u30fc\u30bf\u3092chunk\u5206\u5272\u3057\u3066\u30b5\u30fc\u30d0\u30fc\u306b\u9001\u4fe1\u3059\u308b\u3002<\/p>\n\n\n\n<p>\u74b0\u5883<br>Windows10(64bit)<br>nvm(Node Version Manager)\u3092\u4f7f\u7528\u3059\u308b\u3002<br>nvm\u306fnode\u3068npm\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u306e\u5207\u308a\u66ff\u3048\u304c\u3067\u304d\u308b\u3002<br>node.js\u306f\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8\u304c\u983b\u7e41\u306b\u884c\u308f\u308c\u308b\u305f\u3081\u3001\u30d0\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406\u30c4\u30fc\u30eb\u3092\u4f7f\u3046\u3068\u90fd\u5408\u304c\u826f\u3044\u3053\u3068\u304c\u591a\u3044\u3002<br>\u300c\u7279\u5b9a\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u5fc5\u8981\u306aNode.js\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u7c21\u5358\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3066\u4f7f\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u3002\u300d\u3084\u300c\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u6bce\u306bNode.js\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u306e\u5207\u308a\u66ff\u3048\u304c\u7c21\u5358\u306b\u306a\u308b\u3002\u300d\u7b49\u306e\u30e1\u30ea\u30c3\u30c8\u304c\u3042\u308b\u3002<br>nvm 1.1.10<br>node v18.15.0<br>npm 9.5.0<\/p>\n\n\n\n<!--more-->\n\n\n\n<br>\n<script async=\"\" src=\"https:\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js?client=ca-pub-3461056110605997\" crossorigin=\"anonymous\"><\/script>\n<ins class=\"adsbygoogle\" style=\"display:block; text-align:center;\" data-ad-layout=\"in-article\" data-ad-format=\"fluid\" data-ad-client=\"ca-pub-3461056110605997\" data-ad-slot=\"3137443461\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n<br>\n\n\n\n<p>Node.js\u3067\u30b5\u30fc\u30d0\u30fc\u306eURL\u306b\u30c7\u30fc\u30bf\u3092chunk\u5206\u5272\u3057\u3066post\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u9001\u308b\u30b3\u30fc\u30c9\u300cpost2.js\u300d\u3092\u6b21\u306b\u793a\u3059\u3002<\/p>\n\n\n\n<pre><code>\n(function() {\n\n    \/\/ Node.js\u306ehttps\u30e2\u30b8\u30e5\u30fc\u30eb\u3092require\u3092\u4f7f\u3063\u3066\u30a4\u30f3\u30dd\u30fc\u30c8\u3057\u3066\u3001\u5b9a\u6570https\u306b\u683c\u7d0d\u3059\u308b\u3002\n    const https = require(&quot;https&quot;);\n    const {\n        Readable\n    } = require(&#039;stream&#039;);\n\n    class ChunkedStream extends Readable {\n\n        constructor(data, chunkSize) {\n            super();\n            this.data = data;\n            this.chunkSize = chunkSize;\n            this.offset = 0;\n        }\n\n        _read() {\n            const chunk = this.data.slice(this.offset, this.offset + this.chunkSize);\n            this.offset += this.chunkSize;\n            this.push(chunk || null);\n        }\n    }\n\n    const url = &quot;https:\/\/localhost&quot;;\n    \n    \/\/ \u30ea\u30af\u30a8\u30b9\u30c8\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u8a2d\u5b9a\n    const options = {\n        method: &#039;POST&#039;,\n        \/\/ Node.js\u306ehttps\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u53b3\u5bc6\u306aSSL\u8a3c\u660e\u66f8\u306e\u691c\u8a3c\u3092\u884c\u3046\u305f\u3081\u3001\u81ea\u5df1\u7f72\u540d\u8a3c\u660e\u66f8\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u30b5\u30fc\u30d0\u30fc\u306b\u63a5\u7d9a\u3057\u3088\u3046\u3068\u3059\u308b\u3068\u30a8\u30e9\u30fc\u300cself-signed certificate\u300d\u304c\u767a\u751f\u3059\u308b\u3002\n        \/\/ \u81ea\u5df1\u7f72\u540d\u8a3c\u660e\u66f8\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u5834\u5408\u3001https\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u9001\u4fe1\u3059\u308b\u969b\u306b rejectUnauthorized\u30aa\u30d7\u30b7\u30e7\u30f3\u3092false\u306b\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3067\u30a8\u30e9\u30fc\u3092\u56de\u907f\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u3002\n        \/\/ \u305f\u3060\u3057\u3001\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4e0a\u306e\u7406\u7531\u304b\u3089\u81ea\u5df1\u7f72\u540d\u8a3c\u660e\u66f8\u3092\u4fe1\u983c\u3059\u308b\u304b\u3069\u3046\u304b\u306f\u614e\u91cd\u306b\u691c\u8a0e\u3059\u308b\u3053\u3068\u3002\n        rejectUnauthorized: false,\n        \/\/ headers\u306b\u8a2d\u5b9a\u3059\u308bContent-Type\u30d8\u30c3\u30c0\u30fc\u306f\u3001HTTPS\u30ea\u30af\u30a8\u30b9\u30c8\u3084\u30ec\u30b9\u30dd\u30f3\u30b9\u306e\u30dc\u30c7\u30a3\u306b\u542b\u307e\u308c\u308b\u30c7\u30fc\u30bf\u306e\u7a2e\u985e\u3092\u6307\u5b9a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u308b\u305f\u3081\u3002\n        \/\/ headers\u306b\u8a2d\u5b9a\u3059\u308bContent-Length\u30d8\u30c3\u30c0\u30fc\u306f\u3001HTTP\u30ea\u30af\u30a8\u30b9\u30c8\u307e\u305f\u306f\u30ec\u30b9\u30dd\u30f3\u30b9\u306e\u30dc\u30c7\u30a3\u306e\u30b5\u30a4\u30ba\u3092\u30d0\u30a4\u30c8\u5358\u4f4d\u3067\u6307\u5b9a\u3059\u308b\u3002\u3064\u307e\u308a\u3001\u30dc\u30c7\u30a3\u306e\u5185\u5bb9\u306e\u9577\u3055\u3092\u793a\u3059\u305f\u3081\u306b\u4f7f\u7528\u3059\u308b\u3002\n        \/\/ HTTP POST\u30ea\u30af\u30a8\u30b9\u30c8\u3067\u30dc\u30c7\u30a3\u3092\u30c1\u30e3\u30f3\u30af\u5206\u5272\u3057\u3066\u9001\u4fe1\u3059\u308b\u5834\u5408\u3001Content-Length\u30d8\u30c3\u30c0\u30fc\u306e\u8a2d\u5b9a\u306f\u5fc5\u8981\u306a\u3044\u3002\n        \/\/ \u306a\u305c\u306a\u3089\u3001\u30c1\u30e3\u30f3\u30af\u5206\u5272\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u3001\u30ea\u30af\u30a8\u30b9\u30c8\u30dc\u30c7\u30a3\u306e\u5168\u4f53\u306e\u30b5\u30a4\u30ba\u304c\u4e8b\u524d\u306b\u308f\u304b\u3089\u306a\u3044\u305f\u3081\u3001\u6b63\u78ba\u306a\u30b3\u30f3\u30c6\u30f3\u30c4\u306e\u9577\u3055\u3092\u6307\u5b9a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u306a\u3044\u3002\n        \/\/ \u4ee3\u308f\u308a\u306b\u3001\u30c1\u30e3\u30f3\u30af\u5206\u5272\u3055\u308c\u305f\u30c7\u30fc\u30bf\u3092\u9001\u4fe1\u3059\u308b\u969b\u306b\u306f\u3001Transfer-Encoding\u30d8\u30c3\u30c0\u30fc\u3092\u4f7f\u7528\u3057\u3066\u30c1\u30e3\u30f3\u30af\u8ee2\u9001\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u3092\u6307\u5b9a\u3059\u308b\u3002\n        headers: {\n            &#039;Content-Type&#039;: &#039;text\/plain&#039;, \/\/ \u30ea\u30af\u30a8\u30b9\u30c8\u30dc\u30c7\u30a3\u306e\u30c7\u30fc\u30bf\u5f62\u5f0f\u306b\u5408\u308f\u305b\u3066\u8a2d\u5b9a\n            &#039;Transfer-Encoding&#039;: &#039;chunked&#039;,\n            \/\/ Node.js\u304b\u3089post\u30e1\u30bd\u30c3\u30c9\u3067\u624b\u52d5\u9001\u4fe1\n            &#039;User-Agent&#039;: &#039;Manual submission via post method from Node.js&#039;, \/\/ \u30e6\u30fc\u30b6\u30fc\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u3092\u8a2d\u5b9a\n        },\n\n    };\n\n    \/\/\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u9001\u4fe1\u3059\u308b\u3002\n    \/\/ https\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u304b\u3089request\u30e1\u30bd\u30c3\u30c9\u3092\u5b9f\u884c\u3059\u308b\u3002\n    \/\/ request\u30e1\u30bd\u30c3\u30c9\u306f\u3001\u5f15\u6570\u3068\u3057\u3066\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u51e6\u7406\u3059\u308b\u30b3\u30fc\u30eb\u30d0\u30c3\u30af\u95a2\u6570\u3092\u53d7\u3051\u53d6\u308b\u3002\n    \/\/ \u30ec\u30b9\u30dd\u30f3\u30b9\u3092\u51e6\u7406\u3059\u308b\u305f\u3081\u306e\u30b3\u30fc\u30eb\u30d0\u30c3\u30af\u95a2\u6570\u3092\u6307\u5b9a\u3059\u308b\u3002\n    \/\/ \u30b3\u30fc\u30eb\u30d0\u30c3\u30af\u95a2\u6570\u306f\u3001\u30ec\u30b9\u30dd\u30f3\u30b9\u30aa\u30d6\u30b8\u30a7\u30af\u30c8(res)\u3092\u53d7\u3051\u53d6\u308a\u30ec\u30b9\u30dd\u30f3\u30b9\u306e\u51e6\u7406\u3092\u884c\u3046\u3002\n    const req = https.request(url, options, (res) =&gt; {\n\n        console.log(`statusCode: ${res.statusCode}`);\/\/ \u30b9\u30c6\u30fc\u30bf\u30b9\u30b3\u30fc\u30c9\u3092\u8868\u793a\u3059\u308b\u3002\n        console.log(`content-type: ${res.headers[&#039;content-type&#039;]}`); \/\/ \u30ec\u30b9\u30dd\u30f3\u30b9\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u30bf\u30a4\u30d7\u3092\u8868\u793a\u3059\u308b\u3002\n\n        \/\/ res.pipe(process.stdout)\u306f\u3001\u30ec\u30b9\u30dd\u30f3\u30b9\u30b9\u30c8\u30ea\u30fc\u30e0\u3092\u6a19\u6e96\u51fa\u529b\u30b9\u30c8\u30ea\u30fc\u30e0\u306b\u30d1\u30a4\u30d7\u63a5\u7d9a\u3059\u308b\u3002\n        \/\/ pipe\u30e1\u30bd\u30c3\u30c9\u306f\u3001Readable\u30b9\u30c8\u30ea\u30fc\u30e0\u304b\u3089\u30c7\u30fc\u30bf\u3092\u8aad\u307f\u53d6\u308a\u3001\u305d\u306e\u30c7\u30fc\u30bf\u3092Writable\u30b9\u30c8\u30ea\u30fc\u30e0\u306b\u66f8\u304d\u8fbc\u3080\u3002\n        \/\/ process.stdout\u306fNode.js\u306e\u6a19\u6e96\u51fa\u529b\u30b9\u30c8\u30ea\u30fc\u30e0\u3092\u8868\u3057\u3066\u304a\u308a\u3001res.pipe(process.stdout) \u306b\u3088\u3063\u3066\u3001\u30ec\u30b9\u30dd\u30f3\u30b9\u306e\u30c7\u30fc\u30bf\u304c\u8aad\u307f\u53d6\u3089\u308c\u3066\u6a19\u6e96\u51fa\u529b\u306b\u8868\u793a\u3055\u308c\u308b\u3002\n        \/\/ \u3064\u307e\u308a\u3001HTTPS POST\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u9001\u4fe1\u3057\u3001\u30ec\u30b9\u30dd\u30f3\u30b9\u3092\u53d6\u5f97\u3057\u305f\u5f8c\u3001\u305d\u306e\u30ec\u30b9\u30dd\u30f3\u30b9\u306e\u30c7\u30fc\u30bf\u3092\u6a19\u6e96\u51fa\u529b\u306b\u8868\u793a\u3059\u308b\u3068\u3044\u3046\u52d5\u4f5c\u306b\u306a\u308b\u3002\n        \/\/ \u30ec\u30b9\u30dd\u30f3\u30b9\u30aa\u30d6\u30b8\u30a7\u30af\u30c8(res)\u306f\u3001https.IncomingMessage\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3067\u3042\u308b\u3002\n\n        res.pipe(process.stdout);\n        \n        let responseData = &#039;&#039;;\n        \n        \/\/data\u53d7\u4fe1\u30a4\u30d9\u30f3\u30c8\u306e\u767a\u751f\u6642\u306b\u65ad\u7247\u30c7\u30fc\u30bf(chunk)\u3092\u53d6\u5f97\u3059\u308b\u3002\n        res.on(&#039;data&#039;, (chunk) =&gt; {\n            responseData += chunk;\n        });\n\n        \/\/\u53d7\u4fe1\u5b8c\u4e86(end)\u30a4\u30d9\u30f3\u30c8\u767a\u751f\u6642\n        \/\/\u300cend\u300d\u30a4\u30d9\u30f3\u30c8\u306f\u3001\u30ec\u30b9\u30dd\u30f3\u30b9\u306e\u30c7\u30fc\u30bf\u306e\u8aad\u307f\u53d6\u308a\u304c\u5b8c\u4e86\u3057\u305f\u5834\u5408\u306b\u767a\u751f\u3059\u308b\u3002\n        res.on(&#039;end&#039;, () =&gt; {\n            console.log(responseData);\n            console.log(&quot;\u30ec\u30b9\u30dd\u30f3\u30b9\u306e\u8aad\u307f\u53d6\u308a\u304c\u5b8c\u4e86\u3057\u307e\u3057\u305f&quot;);\n            \/\/ \u3053\u3053\u3067\u5fc5\u8981\u306a\u5f8c\u51e6\u7406\u3092\u5b9f\u884c\n        });\n\n    });\n\n    \/\/\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u9001\u4fe1\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u305f\u5834\u5408\u306b\u300cerror\u300d\u30a4\u30d9\u30f3\u30c8\u306f\u767a\u751f\u3059\u308b\u3002\n    req.on(&#039;error&#039;, (err) =&gt; {\n        console.error(err.message);\n    });\n\n    \/\/\u30ea\u30af\u30a8\u30b9\u30c8\u30dc\u30c7\u30a3\u306e\u30c7\u30fc\u30bf\u3092\u8a2d\u5b9a\n    const requestBody = &quot;PostData&quot;;\n    const chunkSize = 3; \/\/ \u30c1\u30e3\u30f3\u30af\u306e\u30b5\u30a4\u30ba\u3092\u8a2d\u5b9a\n\n    \/\/ Readable\u30b9\u30c8\u30ea\u30fc\u30e0\u3092\u4f5c\u6210\n    \/\/ \u30ea\u30af\u30a8\u30b9\u30c8\u306e\u30dc\u30c7\u30a3\u3092\u30c1\u30e3\u30f3\u30af\u5206\u5272\u3057\u3066\u9001\u4fe1\u3059\u308b\n    const stream = new ChunkedStream(requestBody, chunkSize);\n\n    stream.on(&#039;data&#039;, (chunk) =&gt; {\n        req.write(chunk);\n    });\n\n    stream.on(&#039;end&#039;, () =&gt; {\n        req.end();\n    });\n\n})();\n<\/code><\/pre>\n\n\n\n<p>post2.js\u3092\u5b9f\u884c\u3059\u308b\u3002Node.js\u3067\u7acb\u3061\u4e0a\u3052\u305f\u30b5\u30fc\u30d0\u30fc\u300chttps:\/\/localhost\u300d\u306b\u300cPOST\u30ea\u30af\u30a8\u30b9\u30c8\u300d\u3092\u9001\u4fe1\u3059\u308b\u3002<\/p>\n\n\n\n<pre><code>\nc:\\node\\https_server>node post2.js\nstatusCode: 200\ncontent-type: text\/plain;charset=utf-8\nmethod:POST\nreq.url:\/\nPostData\nHello World! POST\nmethod:POST\nreq.url:\/\nPostData\nHello World! POST\n\n\u30ec\u30b9\u30dd\u30f3\u30b9\u306e\u8aad\u307f\u53d6\u308a\u304c\u5b8c\u4e86\u3057\u307e\u3057\u305f\n\nc:\\node\\https_server>\n<\/code><\/pre>\n\n\n\n<p>\u30b5\u30fc\u30d0\u30fc\u304c\u7acb\u3061\u4e0a\u304c\u3063\u3066\u3044\u306a\u3044\u5834\u5408\u306f\u30a8\u30e9\u30fc\u306b\u306a\u308b\u3002<\/p>\n\n\n\n<pre><code>\nc:\\node\\https_server>node post2.js\nconnect ECONNREFUSED ::1:443\n\nc:\\node\\https_server>\n<\/code><\/pre>\n\n\n\n<script type=\"text\/javascript\">\njQuery(function($){\n$(\".jp-video\").hide();\n});\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>http\u30af\u30e9\u30a4\u30a2\u30f3\u30c8(POST\u30ea\u30af\u30a8\u30b9\u30c8)\u3068\u306f\u3001Node.js\u3067\u30b5\u30fc\u30d0\u30fc\u306eURL\u306bPOST\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u9001\u308b\u3002\u30d6\u30e9\u30a6\u30b6\u3067\u30b5\u30fc\u30d0\u30fc\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u5834\u5408\u306fPOST\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u30b5\u30fc\u30d0\u30fc\u306b\u9001\u3063\u3066\u3044\u308b\u3002\u3053\u306ePOST\u30ea\u30af\u30a8\u30b9\u30c8\u3092Node [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[6],"tags":[],"class_list":["post-2556","post","type-post","status-publish","format-standard","hentry","category-node-js"],"jetpack_featured_media_url":"","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/attacktube.com\/index.php?rest_route=\/wp\/v2\/posts\/2556","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/attacktube.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/attacktube.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/attacktube.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/attacktube.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2556"}],"version-history":[{"count":3,"href":"https:\/\/attacktube.com\/index.php?rest_route=\/wp\/v2\/posts\/2556\/revisions"}],"predecessor-version":[{"id":2857,"href":"https:\/\/attacktube.com\/index.php?rest_route=\/wp\/v2\/posts\/2556\/revisions\/2857"}],"wp:attachment":[{"href":"https:\/\/attacktube.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2556"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/attacktube.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2556"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/attacktube.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2556"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}