{"id":119,"date":"2026-01-19T21:45:10","date_gmt":"2026-01-19T18:45:10","guid":{"rendered":"https:\/\/blog.giturn.com\/?p=119"},"modified":"2026-01-23T23:08:19","modified_gmt":"2026-01-23T20:08:19","slug":"building-real-time-driver-tracking","status":"publish","type":"post","link":"https:\/\/giturn.com\/blog\/building-real-time-driver-tracking\/","title":{"rendered":"\u0628\u0646\u0627\u0621 \u0646\u0638\u0627\u0645 \u062a\u062a\u0628\u0639 \u0644\u062d\u0638\u064a \u0644\u0644\u0633\u0627\u0626\u0642\u064a\u0646: \u0643\u064a\u0641 \u0627\u0633\u062a\u062e\u062f\u0645\u0646\u0627 Socket.io \u0648 Flutter \u0641\u064a \u062a\u0637\u0628\u064a\u0642 &#8220;Trendo Taxi&#8221;"},"content":{"rendered":"<h4 data-path-to-node=\"12\">\u0627\u0644\u0645\u0642\u062f\u0645\u0629: \u0644\u0645\u0627\u0630\u0627 \u062a\u0641\u0634\u0644 \u0627\u0644\u0637\u0631\u0642 \u0627\u0644\u062a\u0642\u0644\u064a\u062f\u064a\u0629\u061f<\/h4>\n<p data-path-to-node=\"13\">\u0639\u0646\u062f \u0628\u0631\u0645\u062c\u0629 \u062a\u0637\u0628\u064a\u0642 \u0645\u062b\u0644 <b data-path-to-node=\"13\" data-index-in-node=\"20\">Trendo Taxi<\/b>\u060c \u0627\u0644\u062a\u062d\u062f\u064a \u0627\u0644\u0623\u0643\u0628\u0631 \u0647\u0648: <i data-path-to-node=\"13\" data-index-in-node=\"51\">\u0643\u064a\u0641 \u0646\u062c\u0639\u0644 \u0627\u0644\u0639\u0645\u064a\u0644 \u064a\u0631\u0649 \u0633\u064a\u0627\u0631\u0629 \u0627\u0644\u0643\u0627\u0628\u062a\u0646 \u062a\u062a\u062d\u0631\u0643 \u0628\u0633\u0644\u0627\u0633\u0629 \u0639\u0644\u0649 \u0627\u0644\u062e\u0631\u064a\u0637\u0629\u061f<\/i><\/p>\n<p data-path-to-node=\"14\">\u0627\u0644\u0645\u0628\u062a\u062f\u0626\u0648\u0646 \u064a\u0633\u062a\u062e\u062f\u0645\u0648\u0646 \u0628\u0631\u0648\u062a\u0648\u0643\u0648\u0644 <code data-path-to-node=\"14\" data-index-in-node=\"28\">HTTP Request<\/code> \u0644\u0637\u0644\u0628 \u0627\u0644\u0645\u0648\u0642\u0639 \u0643\u0644 5 \u062b\u0648\u0627\u0646\u064d. \u0647\u0630\u0647 \u0643\u0627\u0631\u062b\u0629 \u062a\u0642\u0646\u064a\u0629 \u062a\u0624\u062f\u064a \u0625\u0644\u0649:<\/p>\n<ol start=\"1\" data-path-to-node=\"15\">\n<li>\n<p data-path-to-node=\"15,0,0\">\u0636\u063a\u0637 \u0647\u0627\u0626\u0644 \u0639\u0644\u0649 \u0627\u0644\u0633\u0631\u0641\u0631 (Server Overload).<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"15,1,0\">\u062d\u0631\u0643\u0629 &#8220;\u0645\u062a\u0642\u0637\u0639\u0629&#8221; \u0644\u0644\u0633\u064a\u0627\u0631\u0629 (Teleporting effect) \u0628\u062f\u0644\u0627\u064b \u0645\u0646 \u0627\u0644\u062d\u0631\u0643\u0629 \u0627\u0644\u0646\u0627\u0639\u0645\u0629.<\/p>\n<\/li>\n<\/ol>\n<p data-path-to-node=\"16\">\u0627\u0644\u062d\u0644 \u0627\u0644\u0630\u064a \u0627\u0639\u062a\u0645\u062f\u0646\u0627\u0647 \u0641\u064a <b data-path-to-node=\"16\" data-index-in-node=\"22\">Giturn<\/b> \u0647\u0648 \u0625\u0646\u0634\u0627\u0621 &#8220;\u0642\u0646\u0627\u0629 \u0627\u062a\u0635\u0627\u0644 \u0645\u0641\u062a\u0648\u062d\u0629&#8221; (WebSocket) \u0628\u064a\u0646 \u0627\u0644\u0633\u0627\u0626\u0642\u060c \u0627\u0644\u0633\u0631\u0641\u0631\u060c \u0648\u0627\u0644\u0631\u0627\u0643\u0628.<\/p>\n<h4 data-path-to-node=\"17\">\u0627\u0644\u062e\u0637\u0648\u0629 1: \u0627\u0644\u0645\u062d\u0631\u0643 \u0627\u0644\u062e\u0644\u0641\u064a (The Backend Engine)<\/h4>\n<p data-path-to-node=\"18\">\u0627\u0633\u062a\u062e\u062f\u0645\u0646\u0627 <b data-path-to-node=\"18\" data-index-in-node=\"9\">Node.js<\/b> \u0645\u0639 \u0645\u0643\u062a\u0628\u0629 <b data-path-to-node=\"18\" data-index-in-node=\"26\">Socket.io<\/b> \u0644\u0625\u062f\u0627\u0631\u0629 \u0627\u0644\u0627\u062a\u0635\u0627\u0644. \u0627\u0644\u0633\u0627\u0626\u0642 \u064a\u0631\u0633\u0644 \u0625\u062d\u062f\u0627\u062b\u064a\u0627\u062a\u0647\u060c \u0648\u0627\u0644\u0633\u0631\u0641\u0631 \u064a\u0642\u0648\u0645 \u0641\u0648\u0631\u0627\u064b \u0628\u062a\u0648\u062c\u064a\u0647\u0647\u0627 (Broadcasting) \u0644\u0644\u0631\u0627\u0643\u0628 \u0627\u0644\u0645\u062d\u062f\u062f \u0641\u0642\u0637.<\/p>\n<p data-path-to-node=\"19\">\u0625\u0644\u064a\u0643 \u0643\u064a\u0641 \u064a\u0628\u062f\u0648 \u0627\u0644\u0643\u0648\u062f \u0641\u064a \u062c\u0627\u0646\u0628 \u0627\u0644\u0633\u0631\u0641\u0631 (Backend):<\/p>\n<div class=\"code-block ng-tns-c372103520-313 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwjipuvt4peSAxUAAAAAHQAAAAAQigU\">\n<div class=\"code-block-decoration header-formatted gds-title-s ng-tns-c372103520-313 ng-star-inserted\">\n<p><span class=\"ng-tns-c372103520-313\">JavaScript<\/span><\/p>\n<div class=\"buttons ng-tns-c372103520-313 ng-star-inserted\"><\/div>\n<\/div>\n<div class=\"formatted-code-block-internal-container ng-tns-c372103520-313\">\n<div class=\"animated-opacity ng-tns-c372103520-313\">\n<pre class=\"ng-tns-c372103520-313\"><code class=\"code-container formatted ng-tns-c372103520-313\" role=\"text\" data-test-id=\"code-content\"><span class=\"hljs-keyword\">const<\/span> io = <span class=\"hljs-built_in\">require<\/span>(<span class=\"hljs-string\">'socket.io'<\/span>)(server);\r\n\r\nio.on(<span class=\"hljs-string\">'connection'<\/span>, <span class=\"hljs-function\">(<span class=\"hljs-params\">socket<\/span>) =&gt;<\/span> {\r\n  \r\n  <span class=\"hljs-comment\">\/\/ 1. \u0627\u0633\u062a\u0644\u0627\u0645 \u0645\u0648\u0642\u0639 \u0627\u0644\u0633\u0627\u0626\u0642 \u0648\u062a\u062d\u062f\u064a\u062b\u0647<\/span>\r\n  socket.on(<span class=\"hljs-string\">'updateDriverLocation'<\/span>, <span class=\"hljs-function\">(<span class=\"hljs-params\">data<\/span>) =&gt;<\/span> {\r\n    <span class=\"hljs-keyword\">const<\/span> { driverId, latitude, longitude } = data;\r\n    \r\n    <span class=\"hljs-comment\">\/\/ 2. \u0625\u0631\u0633\u0627\u0644 \u0627\u0644\u0645\u0648\u0642\u0639 \u0627\u0644\u062c\u062f\u064a\u062f \u0641\u0648\u0631\u0627\u064b \u0644\u0644\u0631\u0627\u0643\u0628 \u0627\u0644\u0645\u0631\u062a\u0628\u0637 \u0628\u0647\u0630\u0627 \u0627\u0644\u0633\u0627\u0626\u0642<\/span>\r\n    <span class=\"hljs-comment\">\/\/ \u0646\u0633\u062a\u062e\u062f\u0645 'to' \u0644\u0625\u0631\u0633\u0627\u0644 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0644\u063a\u0631\u0641\u0629 \u0645\u062d\u062f\u062f\u0629 (Room) \u0644\u0636\u0645\u0627\u0646 \u0627\u0644\u062e\u0635\u0648\u0635\u064a\u0629<\/span>\r\n    io.to(<span class=\"hljs-string\">`trip_<span class=\"hljs-subst\">${data.tripId}<\/span>`<\/span>).emit(<span class=\"hljs-string\">'driverMoved'<\/span>, {\r\n      <span class=\"hljs-attr\">lat<\/span>: latitude,\r\n      <span class=\"hljs-attr\">lng<\/span>: longitude\r\n    });\r\n    \r\n    <span class=\"hljs-built_in\">console<\/span>.log(<span class=\"hljs-string\">`Driver <span class=\"hljs-subst\">${driverId}<\/span> moved to: <span class=\"hljs-subst\">${latitude}<\/span>, <span class=\"hljs-subst\">${longitude}<\/span>`<\/span>);\r\n  });\r\n\r\n});\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<h4 data-path-to-node=\"21\">\u0627\u0644\u062e\u0637\u0648\u0629 2: \u0627\u0644\u0627\u0633\u062a\u0642\u0628\u0627\u0644 \u0641\u064a \u062a\u0637\u0628\u064a\u0642 \u0627\u0644\u0645\u0648\u0628\u0627\u064a\u0644 (Flutter Client)<\/h4>\n<p data-path-to-node=\"22\">\u0641\u064a \u062c\u0627\u0646\u0628 \u062a\u0637\u0628\u064a\u0642 \u0627\u0644\u0631\u0627\u0643\u0628 (Flutter)\u060c \u0644\u0627 \u0646\u0642\u0648\u0645 \u0628\u0639\u0645\u0644 &#8220;Refresh&#8221;. \u0627\u0644\u062a\u0637\u0628\u064a\u0642 &#8220;\u064a\u0633\u062a\u0645\u0639&#8221; (Listens) \u0644\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0642\u0627\u062f\u0645\u0629. \u0628\u0645\u062c\u0631\u062f \u0648\u0635\u0648\u0644 \u0625\u062d\u062f\u0627\u062b\u064a\u0627\u062a \u062c\u062f\u064a\u062f\u0629\u060c \u0646\u0642\u0648\u0645 \u0628\u062a\u062d\u062f\u064a\u062b \u0627\u0644\u0640 Marker \u0639\u0644\u0649 \u0627\u0644\u062e\u0631\u064a\u0637\u0629.<\/p>\n<p data-path-to-node=\"23\">\u0625\u0644\u064a\u0643 \u0643\u0648\u062f \u0627\u0644\u0631\u0628\u0637 \u0641\u064a Flutter:<\/p>\n<p><code><\/code><\/p>\n<div class=\"code-block ng-tns-c372103520-314 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwjipuvt4peSAxUAAAAAHQAAAAAQiwU\">\n<div class=\"code-block-decoration header-formatted gds-title-s ng-tns-c372103520-314 ng-star-inserted\">\n<p><span class=\"ng-tns-c372103520-314\">Dart<\/span><\/p>\n<div class=\"buttons ng-tns-c372103520-314 ng-star-inserted\"><\/div>\n<\/div>\n<div class=\"formatted-code-block-internal-container ng-tns-c372103520-314\">\n<div class=\"animated-opacity ng-tns-c372103520-314\">\n<pre class=\"ng-tns-c372103520-314\"><code class=\"code-container formatted ng-tns-c372103520-314\" role=\"text\" data-test-id=\"code-content\"><span class=\"hljs-keyword\">import<\/span> <span class=\"hljs-string\">'package:socket_io_client\/socket_io_client.dart'<\/span> <span class=\"hljs-keyword\">as<\/span> IO;\r\n\r\n<span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">TrackingService<\/span> <\/span>{\r\n  <span class=\"hljs-keyword\">late<\/span> IO.Socket socket;\r\n\r\n  <span class=\"hljs-keyword\">void<\/span> initSocket(<span class=\"hljs-built_in\">String<\/span> tripId) {\r\n    <span class=\"hljs-comment\">\/\/ \u0627\u0644\u0627\u062a\u0635\u0627\u0644 \u0628\u0627\u0644\u0633\u0631\u0641\u0631<\/span>\r\n    socket = IO.io(<span class=\"hljs-string\">'https:\/\/api.trendo-taxi.com'<\/span>, &lt;<span class=\"hljs-built_in\">String<\/span>, <span class=\"hljs-built_in\">dynamic<\/span>&gt;{\r\n      <span class=\"hljs-string\">'transports'<\/span>: [<span class=\"hljs-string\">'websocket'<\/span>],\r\n      <span class=\"hljs-string\">'autoConnect'<\/span>: <span class=\"hljs-keyword\">false<\/span>,\r\n    });\r\n\r\n    socket.connect();\r\n\r\n    <span class=\"hljs-comment\">\/\/ \u0627\u0644\u0627\u0633\u062a\u0645\u0627\u0639 \u0644\u062d\u062f\u062b 'driverMoved' \u0627\u0644\u0642\u0627\u062f\u0645 \u0645\u0646 \u0627\u0644\u0633\u0631\u0641\u0631<\/span>\r\n    socket.<span class=\"hljs-keyword\">on<\/span>(<span class=\"hljs-string\">'driverMoved'<\/span>, (data) {\r\n      <span class=\"hljs-comment\">\/\/ data \u062a\u062d\u062a\u0648\u064a \u0639\u0644\u0649 {lat, lng}<\/span>\r\n      updateCarMarkerOnMap(data[<span class=\"hljs-string\">'lat'<\/span>], data[<span class=\"hljs-string\">'lng'<\/span>]);\r\n    });\r\n  }\r\n\r\n  <span class=\"hljs-keyword\">void<\/span> updateCarMarkerOnMap(<span class=\"hljs-built_in\">double<\/span> lat, <span class=\"hljs-built_in\">double<\/span> lng) {\r\n    <span class=\"hljs-comment\">\/\/ \u0643\u0648\u062f \u062a\u062d\u062f\u064a\u062b \u0627\u0644\u0640 State \u0644\u062a\u062d\u0631\u064a\u0643 \u0627\u0644\u0633\u064a\u0627\u0631\u0629<\/span>\r\n    <span class=\"hljs-comment\">\/\/ \u0646\u0633\u062a\u062e\u062f\u0645 AnimationController \u0647\u0646\u0627 \u0644\u062c\u0639\u0644 \u0627\u0644\u062d\u0631\u0643\u0629 \u0646\u0627\u0639\u0645\u0629<\/span>\r\n  }\r\n}\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<h4 data-path-to-node=\"25\">\u0627\u0644\u0633\u0631 \u0641\u064a &#8220;\u0627\u0644\u0646\u0639\u0648\u0645\u0629&#8221; (Interpolation)<\/h4>\n<p data-path-to-node=\"26\">\u0648\u0635\u0648\u0644 \u0627\u0644\u0625\u062d\u062f\u0627\u062b\u064a\u0627\u062a \u0648\u062d\u062f\u0647\u0627 \u0644\u0627 \u064a\u0643\u0641\u064a\u060c \u0644\u0623\u0646 \u0627\u0644\u0633\u064a\u0627\u0631\u0629 \u0633\u062a\u0642\u0641\u0632 \u0645\u0646 \u0627\u0644\u0646\u0642\u0637\u0629 A \u0625\u0644\u0649 B. \u0644\u062c\u0639\u0644 \u0627\u0644\u062a\u062c\u0631\u0628\u0629 \u0627\u062d\u062a\u0631\u0627\u0641\u064a\u0629 \u0641\u064a <b data-path-to-node=\"26\" data-index-in-node=\"93\">Trendo Taxi<\/b>\u060c \u0642\u0645\u0646\u0627 \u0628\u0625\u0636\u0627\u0641\u0629 \u0637\u0628\u0642\u0629 <b data-path-to-node=\"26\" data-index-in-node=\"123\">Animation<\/b> \u0628\u064a\u0646 \u0643\u0644 \u0646\u0642\u0637\u062a\u064a\u0646. \u0627\u0644\u062a\u0637\u0628\u064a\u0642 \u064a\u0642\u0648\u0645 &#8220;\u0628\u062a\u0648\u0642\u0639&#8221; \u0627\u0644\u0645\u0633\u0627\u0631 \u0648\u0631\u0633\u0645 \u062d\u0631\u0643\u0629 \u0627\u0646\u0633\u064a\u0627\u0628\u064a\u0629 \u0644\u0644\u0633\u064a\u0627\u0631\u0629 \u062d\u062a\u0649 \u0648\u0635\u0648\u0644 \u0627\u0644\u0625\u062d\u062f\u0627\u062b\u064a\u0627\u062a \u0627\u0644\u062a\u0627\u0644\u064a\u0629.<\/p>\n<h4 data-path-to-node=\"27\">\u0627\u0644\u062e\u0644\u0627\u0635\u0629<\/h4>\n<p data-path-to-node=\"28\">\u0627\u0644\u062a\u0642\u0646\u064a\u0629 \u0627\u0644\u062d\u0642\u064a\u0642\u064a\u0629 \u0647\u064a \u0627\u0644\u062a\u064a \u0644\u0627 \u064a\u0634\u0639\u0631 \u0628\u0647\u0627 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645. \u0627\u0644\u0639\u0645\u064a\u0644 \u064a\u0631\u0649 \u0633\u064a\u0627\u0631\u0629 \u062a\u062a\u062d\u0631\u0643 \u0641\u0642\u0637\u060c \u0644\u0643\u0646 \u062e\u0644\u0641 \u0627\u0644\u0643\u0648\u0627\u0644\u064a\u0633 \u0647\u0646\u0627\u0643 \u0645\u0626\u0627\u062a \u0627\u0644\u0625\u0634\u0627\u0631\u0627\u062a \u062a\u062a\u0628\u0627\u062f\u0644\u0647\u0627 \u0627\u0644\u0633\u0631\u0641\u0631\u0627\u062a \u0641\u064a \u0623\u062c\u0632\u0627\u0621 \u0645\u0646 \u0627\u0644\u062b\u0627\u0646\u064a\u0629. \u0647\u0630\u0627 \u0647\u0648 \u0627\u0644\u0645\u0639\u064a\u0627\u0631 \u0627\u0644\u0630\u064a \u0646\u0628\u0646\u064a \u0639\u0644\u064a\u0647 \u062a\u0637\u0628\u064a\u0642\u0627\u062a\u0646\u0627 \u0641\u064a <b data-path-to-node=\"28\" data-index-in-node=\"193\">Giturn<\/b>.<\/p>\n<p data-path-to-node=\"29\">\u0647\u0644 \u062a\u0631\u064a\u062f \u0628\u0646\u0627\u0621 \u062a\u0637\u0628\u064a\u0642 \u062a\u0648\u0635\u064a\u0644 \u0623\u0648 \u0644\u0648\u062c\u0633\u062a\u064a\u0627\u062a\u061f <b data-path-to-node=\"29\" data-index-in-node=\"38\">[\u0646\u0627\u0642\u0634 \u0641\u0643\u0631\u062a\u0643 \u0645\u0639 \u0641\u0631\u064a\u0642\u0646\u0627 \u0627\u0644\u0647\u0646\u062f\u0633\u064a \u0627\u0644\u0622\u0646]<\/b><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0627\u0644\u0645\u0642\u062f\u0645\u0629: \u0644\u0645\u0627\u0630\u0627 \u062a\u0641\u0634\u0644 \u0627\u0644\u0637\u0631\u0642 \u0627\u0644\u062a\u0642\u0644\u064a\u062f\u064a\u0629\u061f \u0639\u0646\u062f \u0628\u0631\u0645\u062c\u0629 \u062a\u0637\u0628\u064a\u0642 \u0645\u062b\u0644 Trendo Taxi\u060c \u0627\u0644\u062a\u062d\u062f\u064a \u0627\u0644\u0623\u0643\u0628\u0631 \u0647\u0648: \u0643\u064a\u0641 \u0646\u062c\u0639\u0644 \u0627\u0644\u0639\u0645\u064a\u0644 \u064a\u0631\u0649 \u0633\u064a\u0627\u0631\u0629 \u0627\u0644\u0643\u0627\u0628\u062a\u0646 \u062a\u062a\u062d\u0631\u0643 \u0628\u0633\u0644\u0627\u0633\u0629 \u0639\u0644\u0649 \u0627\u0644\u062e\u0631\u064a\u0637\u0629\u061f \u0627\u0644\u0645\u0628\u062a\u062f\u0626\u0648\u0646 \u064a\u0633\u062a\u062e\u062f\u0645\u0648\u0646 \u0628\u0631\u0648\u062a\u0648\u0643\u0648\u0644 HTTP Request \u0644\u0637\u0644\u0628 \u0627\u0644\u0645\u0648\u0642\u0639 \u0643\u0644 5 \u062b\u0648\u0627\u0646\u064d. \u0647\u0630\u0647 \u0643\u0627\u0631\u062b\u0629 \u062a\u0642\u0646\u064a\u0629 \u062a\u0624\u062f\u064a \u0625\u0644\u0649: \u0636\u063a\u0637 \u0647\u0627\u0626\u0644 \u0639\u0644\u0649 \u0627\u0644\u0633\u0631\u0641\u0631 (Server Overload). \u062d\u0631\u0643\u0629 &#8220;\u0645\u062a\u0642\u0637\u0639\u0629&#8221; \u0644\u0644\u0633\u064a\u0627\u0631\u0629 (Teleporting effect) \u0628\u062f\u0644\u0627\u064b \u0645\u0646 \u0627\u0644\u062d\u0631\u0643\u0629 \u0627\u0644\u0646\u0627\u0639\u0645\u0629. \u0627\u0644\u062d\u0644 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"pagelayer_contact_templates":[],"_pagelayer_content":"","_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[14],"tags":[],"class_list":["post-119","post","type-post","status-publish","format-standard","hentry","category-14"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/giturn.com\/blog\/wp-json\/wp\/v2\/posts\/119","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/giturn.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/giturn.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/giturn.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/giturn.com\/blog\/wp-json\/wp\/v2\/comments?post=119"}],"version-history":[{"count":1,"href":"https:\/\/giturn.com\/blog\/wp-json\/wp\/v2\/posts\/119\/revisions"}],"predecessor-version":[{"id":122,"href":"https:\/\/giturn.com\/blog\/wp-json\/wp\/v2\/posts\/119\/revisions\/122"}],"wp:attachment":[{"href":"https:\/\/giturn.com\/blog\/wp-json\/wp\/v2\/media?parent=119"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/giturn.com\/blog\/wp-json\/wp\/v2\/categories?post=119"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/giturn.com\/blog\/wp-json\/wp\/v2\/tags?post=119"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}