{"id":32525,"date":"2024-11-01T09:09:44","date_gmt":"2024-11-01T09:09:44","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=32525"},"modified":"2024-11-01T11:54:57","modified_gmt":"2024-11-01T11:54:57","slug":"flutter-course-using-the-http-package","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/32525\/","title":{"rendered":"Flutter Course: Using the HTTP Package"},"content":{"rendered":"<p><body><\/p>\n<article>\n<header>\n<p>Author: Your Name | Date: October 2023<\/p>\n<\/header>\n<section>\n<h2>Introduction<\/h2>\n<p>\n                Flutter is an open-source UI software development kit (SDK) created by Google,<br \/>\n                which allows rapid development of applications that run on multiple platforms using a single codebase.<br \/>\n                In this tutorial, we will explore the <code>http<\/code> package, commonly used to communicate with external APIs in Flutter.<br \/>\n                This package is a tool that simplifies communication with RESTful APIs.\n            <\/p>\n<\/section>\n<section>\n<h2>Installing the http Package<\/h2>\n<p>\n                To use the http package, you first need to add it to your <code>pubspec.yaml<\/code> file.<br \/>\n                Add the following code to the <code>dependencies:<\/code> section:\n            <\/p>\n<pre><code>dependencies:\n  http: ^0.13.4<\/code><\/pre>\n<p>\n                After adding the package, use the following command to install it:\n            <\/p>\n<pre><code>flutter pub get<\/code><\/pre>\n<\/section>\n<section>\n<h2>Basic Usage<\/h2>\n<p>\n                To use the http package, you first need to import the relevant classes.<br \/>\n                Write your code like this to use the http package:\n            <\/p>\n<pre><code>import 'package:http\/http.dart' as http;<\/code><\/pre>\n<p>\n                Now, let\u2019s look at how to send a GET request to an external API.<br \/>\n                For example, checking user information from the JSONPlaceholder API:\n            <\/p>\n<pre><code>Future<void> fetchData() async {\n  final response = await http.get(Uri.parse('https:\/\/jsonplaceholder.typicode.com\/users'));\n  \n  if (response.statusCode == 200) {\n    \/\/ When the request was successful\n    print('Data: ${response.body}');\n  } else {\n    \/\/ When the request failed\n    throw Exception('Failed to fetch data.');\n  }\n}<\/void><\/code><\/pre>\n<p>\n                The function above operates asynchronously,<br \/>\n                it requests user information from the API, printing the data if the response is successful.\n            <\/p>\n<\/section>\n<section>\n<h2>Sending a POST Request<\/h2>\n<p>\n                Now, let\u2019s look at how to send a POST request.<br \/>\n                For example, when sending data to an API that creates a new user:\n            <\/p>\n<pre><code>Future<void> createUser() async {\n  final response = await http.post(\n    Uri.parse('https:\/\/jsonplaceholder.typicode.com\/users'),\n    headers: <String, String>{\n      'Content-Type': 'application\/json; charset=UTF-8',\n    },\n    body: jsonEncode(<String, String>{\n      'name': 'John Doe',\n      'username': 'johndoe',\n      'email': 'johndoe@example.com',\n    }),\n  );\n\n  if (response.statusCode == 201) {\n    \/\/ User was successfully created.\n    print('User created: ${response.body}');\n  } else {\n    \/\/ When the request failed\n    throw Exception('Failed to create user');\n  }\n}<\/String,><\/String,><\/void><\/code><\/pre>\n<p>\n                In the above code, the `jsonEncode` function is a built-in JSON encoding function in Dart,<br \/>\n                used to convert Dart objects into JSON-formatted strings.\n            <\/p>\n<\/section>\n<section>\n<h2>Query Parameters and Headers<\/h2>\n<p>\n                Let\u2019s learn how to add query parameters in HTTP GET requests<br \/>\n                and how to set request headers.<br \/>\n                For example, you can filter data based on certain conditions:\n            <\/p>\n<pre><code>Future<void> fetchFilteredData() async {\n  final response = await http.get(Uri.parse('https:\/\/jsonplaceholder.typicode.com\/users?filter=active'), \n    headers: <String, String>{\n      'Authorization': 'Bearer some_api_key',\n    }\n  );\n\n  if (response.statusCode == 200) {\n    print('Filtered data: ${response.body}');\n  } else {\n    throw Exception('Failed to fetch filtered data.');\n  }\n}<\/String,><\/void><\/code><\/pre>\n<p>\n                Here, `filter=active` is a query parameter provided by the API,<br \/>\n                and the `Authorization` header is a way to provide authentication information to the server by including the API key.\n            <\/p>\n<\/section>\n<section>\n<h2>Error Handling<\/h2>\n<p>\n                When making API requests, you should always handle errors.<br \/>\n                By checking the HTTP request&#8217;s status code and handling exceptions,<br \/>\n                you can provide a better experience for users:\n            <\/p>\n<pre><code>Future<void> fetchDataWithErrorHandling() async {\n  try {\n    final response = await http.get(Uri.parse('https:\/\/jsonplaceholder.typicode.com\/users'));\n\n    if (response.statusCode == 200) {\n      print('Data: ${response.body}');\n    } else {\n      throw Exception('Server Error: ${response.statusCode}');\n    }\n  } catch (e) {\n    print('Error occurred during request: $e');\n  }\n}<\/void><\/code><\/pre>\n<p>\n                The above code uses a try-catch statement to<br \/>\n                handle potential exceptions that may occur during asynchronous requests.\n            <\/p>\n<\/section>\n<section>\n<h2>Reusing the HTTP Client<\/h2>\n<p>\n                Reusing the HTTP client can optimize performance and<br \/>\n                allow for common use across multiple requests.<br \/>\n                You can create an HTTP client like this:\n            <\/p>\n<pre><code>class ApiService {\n  final http.Client client;\n\n  ApiService(this.client);\n  \n  Future<void> fetchData() async {\n    final response = await client.get(Uri.parse('https:\/\/jsonplaceholder.typicode.com\/users'));\n    \/\/ Same data processing logic as above...\n  }\n}\n\n\/\/ Example usage:\nfinal apiService = ApiService(http.Client());\nawait apiService.fetchData();<\/void><\/code><\/pre>\n<p>\n                By injecting the client into a class like this,<br \/>\n                you can improve reusability and ease of testing.\n            <\/p>\n<\/section>\n<section>\n<h2>Parsing JSON Data<\/h2>\n<p>\n                You can parse JSON data received from an API for use.<br \/>\n                It\u2019s common practice to create model classes to consume the data internally:\n            <\/p>\n<pre><code>class User {\n  final int id;\n  final String name;\n  final String username;\n  final String email;\n\n  User({required this.id, required this.name, required this.username, required this.email});\n\n  factory User.fromJson(Map<String, dynamic> json) {\n    return User(\n      id: json['id'],\n      name: json['name'],\n      username: json['username'],\n      email: json['email'],\n    );\n  }\n}<\/dynamic><\/code><\/pre>\n<p>\n                The above model class shows how<br \/>\n                to convert JSON data into objects.\n            <\/p>\n<\/section>\n<section>\n<h2>Handling List Data<\/h2>\n<p>\n                Let\u2019s learn how to handle multiple JSON objects as a list.<br \/>\n                To do this, you\u2019ll need to properly transform the data received from the API:\n            <\/p>\n<pre><code>Future<List<User>> fetchUsers() async {\n  final response = await http.get(Uri.parse('https:\/\/jsonplaceholder.typicode.com\/users'));\n  \n  if (response.statusCode == 200) {\n    List<dynamic> jsonData = jsonDecode(response.body);\n    return jsonData.map((data) => User.fromJson(data)).toList();\n  } else {\n    throw Exception('Failed to fetch user list.');\n  }\n}<\/dynamic><\/List<User><\/code><\/pre>\n<p>\n                This code parses the JSON data received from the server and<br \/>\n                returns a list of user information.\n            <\/p>\n<\/section>\n<section>\n<h2>Handling HTTP Redirection<\/h2>\n<p>\n                Certain API requests may require handling redirection.<br \/>\n                In this case, it is automatically handled when using <code>http.Client<\/code>,<br \/>\n                but let\u2019s also look at how to manually handle redirection:\n            <\/p>\n<pre><code>Future<void> handleRedirect() async {\n  final response = await http.get(Uri.parse('https:\/\/httpbin.org\/redirect\/1'));\n\n  if (response.statusCode == 200) {\n    print('Final URL: ${response.request!.url}');\n  } else {\n    print('Request failed: ${response.statusCode}');\n  }\n}<\/void><\/code><\/pre>\n<p>\n                In the example above, it will automatically follow redirection for the HTTP request and output the final URL.\n            <\/p>\n<\/section>\n<section>\n<h2>Comprehensive Example: Creating a CRUD Application<\/h2>\n<p>\n                Based on what we have learned so far, let&#8217;s discuss how to implement a simple CRUD (Create, Read, Update, Delete) application.<br \/>\n                For example, you can implement functionalities to add, retrieve, update, and delete users using the JSONPlaceholder API.\n            <\/p>\n<pre><code>class UserApiService {\n  final http.Client client;\n  \n  UserApiService(this.client);\n  \n  Future<List<User>> fetchUsers() async {\n    \/\/ Code to fetch users...\n  }\n\n  Future<void> createUser(User user) async {\n    \/\/ Code to create a user...\n  }\n\n  Future<void> updateUser(User user) async {\n    \/\/ Code to update a user...\n  }\n\n  Future<void> deleteUser(int id) async {\n    final response = await client.delete(Uri.parse('https:\/\/jsonplaceholder.typicode.com\/users\/$id'));\n    \/\/ Logic for deletion...\n  }\n}<\/void><\/void><\/void><\/List<User><\/code><\/pre>\n<p>\n                The above example defines a `UserApiService` class that includes methods for CRUD operations.<br \/>\n                You can add functionalities by implementing actual HTTP requests.\n            <\/p>\n<\/section>\n<footer>\n<p>Through this tutorial, you have gained an understanding of how to use the http package in Flutter and learned how to expand the functionality of Flutter applications through communication with RESTful APIs.<br \/>\n            Expect more examples and advanced content in the next tutorial!<\/p>\n<\/footer>\n<\/article>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Author: Your Name | Date: October 2023 Introduction Flutter is an open-source UI software development kit (SDK) created by Google, which allows rapid development of applications that run on multiple platforms using a single codebase. In this tutorial, we will explore the http package, commonly used to communicate with external APIs in Flutter. This package &hellip; <a href=\"https:\/\/atmokpo.com\/w\/32525\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;Flutter Course: Using the HTTP Package&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[151],"tags":[],"class_list":["post-32525","post","type-post","status-publish","format-standard","hentry","category-flutter-course"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Flutter Course: Using the HTTP Package - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8<\/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:\/\/atmokpo.com\/w\/32525\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Flutter Course: Using the HTTP Package - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"Author: Your Name | Date: October 2023 Introduction Flutter is an open-source UI software development kit (SDK) created by Google, which allows rapid development of applications that run on multiple platforms using a single codebase. In this tutorial, we will explore the http package, commonly used to communicate with external APIs in Flutter. This package &hellip; \ub354 \ubcf4\uae30 &quot;Flutter Course: Using the HTTP Package&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/32525\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:09:44+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T11:54:57+00:00\" \/>\n<meta name=\"author\" content=\"root\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@bebubo4\" \/>\n<meta name=\"twitter:site\" content=\"@bebubo4\" \/>\n<meta name=\"twitter:label1\" content=\"\uae00\uc4f4\uc774\" \/>\n\t<meta name=\"twitter:data1\" content=\"root\" \/>\n\t<meta name=\"twitter:label2\" content=\"\uc608\uc0c1 \ub418\ub294 \ud310\ub3c5 \uc2dc\uac04\" \/>\n\t<meta name=\"twitter:data2\" content=\"4\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/atmokpo.com\/w\/32525\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/32525\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"Flutter Course: Using the HTTP Package\",\"datePublished\":\"2024-11-01T09:09:44+00:00\",\"dateModified\":\"2024-11-01T11:54:57+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/32525\/\"},\"wordCount\":619,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"Flutter course\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/32525\/\",\"url\":\"https:\/\/atmokpo.com\/w\/32525\/\",\"name\":\"Flutter Course: Using the HTTP Package - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:09:44+00:00\",\"dateModified\":\"2024-11-01T11:54:57+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/32525\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/32525\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/32525\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Flutter Course: Using the HTTP Package\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/atmokpo.com\/w\/#website\",\"url\":\"https:\/\/atmokpo.com\/w\/\",\"name\":\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/atmokpo.com\/w\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ko-KR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\",\"name\":\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"url\":\"https:\/\/atmokpo.com\/w\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png\",\"contentUrl\":\"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png\",\"width\":400,\"height\":400,\"caption\":\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\"},\"image\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/bebubo4\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\",\"name\":\"root\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g\",\"caption\":\"root\"},\"sameAs\":[\"http:\/\/atmokpo.com\/w\"],\"url\":\"https:\/\/atmokpo.com\/w\/author\/root\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Flutter Course: Using the HTTP Package - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","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:\/\/atmokpo.com\/w\/32525\/","og_locale":"ko_KR","og_type":"article","og_title":"Flutter Course: Using the HTTP Package - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"Author: Your Name | Date: October 2023 Introduction Flutter is an open-source UI software development kit (SDK) created by Google, which allows rapid development of applications that run on multiple platforms using a single codebase. In this tutorial, we will explore the http package, commonly used to communicate with external APIs in Flutter. This package &hellip; \ub354 \ubcf4\uae30 \"Flutter Course: Using the HTTP Package\"","og_url":"https:\/\/atmokpo.com\/w\/32525\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:09:44+00:00","article_modified_time":"2024-11-01T11:54:57+00:00","author":"root","twitter_card":"summary_large_image","twitter_creator":"@bebubo4","twitter_site":"@bebubo4","twitter_misc":{"\uae00\uc4f4\uc774":"root","\uc608\uc0c1 \ub418\ub294 \ud310\ub3c5 \uc2dc\uac04":"4\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/atmokpo.com\/w\/32525\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/32525\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"Flutter Course: Using the HTTP Package","datePublished":"2024-11-01T09:09:44+00:00","dateModified":"2024-11-01T11:54:57+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/32525\/"},"wordCount":619,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["Flutter course"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/32525\/","url":"https:\/\/atmokpo.com\/w\/32525\/","name":"Flutter Course: Using the HTTP Package - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:09:44+00:00","dateModified":"2024-11-01T11:54:57+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/32525\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/32525\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/32525\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"Flutter Course: Using the HTTP Package"}]},{"@type":"WebSite","@id":"https:\/\/atmokpo.com\/w\/#website","url":"https:\/\/atmokpo.com\/w\/","name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","description":"","publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/atmokpo.com\/w\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ko-KR"},{"@type":"Organization","@id":"https:\/\/atmokpo.com\/w\/#organization","name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","url":"https:\/\/atmokpo.com\/w\/","logo":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/","url":"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png","contentUrl":"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png","width":400,"height":400,"caption":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8"},"image":{"@id":"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/bebubo4"]},{"@type":"Person","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7","name":"root","image":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g","caption":"root"},"sameAs":["http:\/\/atmokpo.com\/w"],"url":"https:\/\/atmokpo.com\/w\/author\/root\/"}]}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/32525","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/comments?post=32525"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/32525\/revisions"}],"predecessor-version":[{"id":32526,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/32525\/revisions\/32526"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=32525"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=32525"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=32525"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}