{"id":72968,"date":"2024-10-25T21:00:55","date_gmt":"2024-10-25T13:00:55","guid":{"rendered":"https:\/\/www.hongkiat.com\/blog\/?p=72968"},"modified":"2025-04-03T23:11:08","modified_gmt":"2025-04-03T15:11:08","slug":"handle-http-requests-flask","status":"publish","type":"post","link":"https:\/\/www.hongkiat.com\/blog\/handle-http-requests-flask\/","title":{"rendered":"How to Handle HTTP Requests in Flask"},"content":{"rendered":"<p>In our previous article, we covered how to <a href=\"https:\/\/www.hongkiat.com\/blog\/flask-render-html-templates-jinja\/\">create simple pages in Flask<\/a> and use Jinja2 as the templating engine. Now, let\u2019s explore how Flask handles requests.<\/p>\n<p>Understanding how HTTP requests work and how to manage them in Flask is key, as this allows you to build more interactive and dynamic web apps, such as building a form, API endpoints, and handling file uploads.<\/p>\n<figure><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/assets.hongkiat.com\/uploads\/handle-http-requests-flask\/flask-http-requests.jpg\" alt=\"Flask HTTP requests illustration\" width=\"750\" height=\"480\"><\/figure>\n<p>Without further ado, let\u2019s get started.<\/p>\n<h2>So, What\u2019s an HTTP Request?<\/h2>\n<p>An HTTP request is a message sent, usually by a browser, to the server asking for data or to perform an action. For example, when you visit a webpage, your browser sends a GET request to the server to retrieve the page\u2019s content.<\/p>\n<p>There are several different types of HTTP requests, and Flask can handle all of them, including <code>GET<\/code> to retrieve data, <code>POST<\/code> to send data to the server like submitting a form, <code>PUT<\/code> to update existing data on the server, and <code>DELETE<\/code> to delete data from the server.<\/p>\n<h2>Handling Requests in Flask<\/h2>\n<p><strong>Flask<\/strong> makes handling requests straightforward by using <strong>routes<\/strong>. In our previous articles, we used routes to create static and dynamic pages. By default, routes only respond to <code>GET<\/code> requests, but you can easily handle other HTTP methods by specifying them in the route.<\/p>\n<p>Assuming we have a contact page at <code>\/contact<\/code>, we probably would want the page to handle both <code>GET<\/code> and <code>POST<\/code> requests to allow users to load the page, as well as to submit the form. To make the page handle these two HTTP methods, we can pass in the <code>methods<\/code> argument, for example:<\/p>\n<pre>\r\n@app.route('\/contact', methods=['GET', 'POST'])\r\ndef submit():\r\n    if request.method == 'POST':\r\n        data = request.form['input_data']\r\n        return render_template('contact.html', data=data)\r\n    return render_template('contact.html')\r\n<\/pre>\n<p>In this example, users can load the <code>\/contact<\/code> page. When the form is submitted, Flask retrieves the form data and passes it to the <code>contact.html<\/code> template. Then, within the template, you can access and process the data using Jinja2 templating.<\/p>\n<h2>Working with Query Parameters<\/h2>\n<p>Data may be passed to a URL via query parameters. This is commonly found on a search page where the search query is passed as a query parameter. These are the parts of the URL after a <code>?<\/code>, like <code>\/search?query=flask<\/code>. Flask makes it easy to access query parameters with the <code>request.args<\/code> dictionary, for example:<\/p>\n<pre>\r\n@app.route('\/search')\r\ndef search():\r\n    query = request.args.get('query')\r\n    \r\n    # Meilisearch\r\n    # See: https:\/\/github.com\/meilisearch\/meilisearch-python\r\n    result = index.search(query)\r\n\r\n    if query:\r\n        return render_template('search.html', result=result)\r\n    return 'No search query provided.'\r\n<\/pre>\n<p>In this case, when a user visits <code>\/search?query=flask<\/code>, we take the query and use it to retrieve the search result, which is then passed to the <code>search.html<\/code> template for rendering.<\/p>\n<h2>Handling JSON Data<\/h2>\n<p>When building an API, we need the data delivered in JSON format. Flask provides a simple way to handle JSON data in requests with the <code>jsonify<\/code> function. Here\u2019s an example of handling JSON data:<\/p>\n<pre>\r\nfrom flask import jsonify\r\n\r\n@app.route('\/api\/data')\r\ndef api_data():\r\n    return make_response(jsonify({\"message\": 'Success'}), 200)\r\n<\/pre>\n<h2>Handling File Uploads<\/h2>\n<p>Flask also makes handling file uploads easy, using the <code>request.files<\/code> object.<\/p>\n<pre>\r\n@app.route('\/upload', methods=['GET', 'POST'])\r\ndef upload_file():\r\n    if request.method == 'POST':\r\n        file = request.files['file']\r\n        file.save(f'\/uploads\/{file.filename}')\r\n        return redirect(url_for('index.html'))\r\n<\/pre>\n<p>In this example, when a user submits a file via the form, Flask saves the file to the specified directory and then redirects the user to the homepage.<\/p>\n<h2>Request Headers and Cookies<\/h2>\n<p>Sometimes you also need to get headers or cookies from the request in your app, such as for passing authentication or tracking user data. Flask provides easy access to headers through <code>request.headers<\/code> and cookies through <code>request.cookies<\/code>. Here\u2019s a basic example of how we use it to authenticate for an API endpoint:<\/p>\n<pre>\r\n@app.route('\/api\/data')\r\ndef check():\r\n    auth = request.headers.get('Authorization')\r\n    nonce = request.cookies.get('nonce')\r\n\r\n    # Simple authentication check\r\n    if auth == 'Bearer X' and nonce == 'Y':\r\n        return jsonify({\"message\": \"Authenticated\"}), 200\r\n    else:\r\n        return jsonify({\"message\": \"Unauthorized\"}), 401\r\n<\/pre>\n<h2>Wrapping up<\/h2>\n<p>Flask makes handling HTTP requests a breeze. Whether you\u2019re working with basic <code>GET<\/code> requests, handling form submissions with <code>POST<\/code>, or dealing with more complex scenarios like JSON data and file uploads, it provides the APIs, functions, and tools you need to get the job done. We\u2019ve only scratched the surface of Flask\u2019s request-handling capabilities, but hopefully, this gives you a solid foundation to start building your own Flask apps.<\/p>","protected":false},"excerpt":{"rendered":"<p>In our previous article, we covered how to create simple pages in Flask and use Jinja2 as the templating engine. Now, let\u2019s explore how Flask handles requests. Understanding how HTTP requests work and how to manage them in Flask is key, as this allows you to build more interactive and dynamic web apps, such as&hellip;<\/p>\n","protected":false},"author":113,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[3392],"tags":[],"topic":[],"class_list":["entry-content","is-maxi"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v22.8 (Yoast SEO v27.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>How to Handle HTTP Requests in Flask - Hongkiat<\/title>\n<meta name=\"description\" content=\"In our previous article, we covered how to create simple pages in Flask and use Jinja2 as the templating engine. Now, let&#039;s explore how Flask handles\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.hongkiat.com\/blog\/handle-http-requests-flask\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Handle HTTP Requests in Flask\" \/>\n<meta property=\"og:description\" content=\"In our previous article, we covered how to create simple pages in Flask and use Jinja2 as the templating engine. Now, let&#039;s explore how Flask handles\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hongkiat.com\/blog\/handle-http-requests-flask\/\" \/>\n<meta property=\"og:site_name\" content=\"Hongkiat\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/hongkiatcom\" \/>\n<meta property=\"article:published_time\" content=\"2024-10-25T13:00:55+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-04-03T15:11:08+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/assets.hongkiat.com\/uploads\/handle-http-requests-flask\/flask-http-requests.jpg\" \/>\n<meta name=\"author\" content=\"Thoriq Firdaus\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@tfirdaus\" \/>\n<meta name=\"twitter:site\" content=\"@hongkiat\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Thoriq Firdaus\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/handle-http-requests-flask\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/handle-http-requests-flask\\\/\"},\"author\":{\"name\":\"Thoriq Firdaus\",\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/#\\\/schema\\\/person\\\/e7948c7a175d211496331e4b6ce55807\"},\"headline\":\"How to Handle HTTP Requests in Flask\",\"datePublished\":\"2024-10-25T13:00:55+00:00\",\"dateModified\":\"2025-04-03T15:11:08+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/handle-http-requests-flask\\\/\"},\"wordCount\":585,\"publisher\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/handle-http-requests-flask\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/assets.hongkiat.com\\\/uploads\\\/handle-http-requests-flask\\\/flask-http-requests.jpg\",\"articleSection\":[\"Coding\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/handle-http-requests-flask\\\/\",\"url\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/handle-http-requests-flask\\\/\",\"name\":\"How to Handle HTTP Requests in Flask - Hongkiat\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/handle-http-requests-flask\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/handle-http-requests-flask\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/assets.hongkiat.com\\\/uploads\\\/handle-http-requests-flask\\\/flask-http-requests.jpg\",\"datePublished\":\"2024-10-25T13:00:55+00:00\",\"dateModified\":\"2025-04-03T15:11:08+00:00\",\"description\":\"In our previous article, we covered how to create simple pages in Flask and use Jinja2 as the templating engine. Now, let's explore how Flask handles\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/handle-http-requests-flask\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/handle-http-requests-flask\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/handle-http-requests-flask\\\/#primaryimage\",\"url\":\"https:\\\/\\\/assets.hongkiat.com\\\/uploads\\\/handle-http-requests-flask\\\/flask-http-requests.jpg\",\"contentUrl\":\"https:\\\/\\\/assets.hongkiat.com\\\/uploads\\\/handle-http-requests-flask\\\/flask-http-requests.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/handle-http-requests-flask\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to Handle HTTP Requests in Flask\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/\",\"name\":\"Hongkiat\",\"description\":\"Tech and Design Tips\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/#organization\",\"name\":\"Hongkiat.com\",\"url\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/wp-content\\\/uploads\\\/hkdc-logo-rect-yoast.jpg\",\"contentUrl\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/wp-content\\\/uploads\\\/hkdc-logo-rect-yoast.jpg\",\"width\":1200,\"height\":799,\"caption\":\"Hongkiat.com\"},\"image\":{\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/hongkiatcom\",\"https:\\\/\\\/x.com\\\/hongkiat\",\"https:\\\/\\\/www.pinterest.com\\\/hongkiat\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/#\\\/schema\\\/person\\\/e7948c7a175d211496331e4b6ce55807\",\"name\":\"Thoriq Firdaus\",\"description\":\"Thoriq is a writer for Hongkiat.com with a passion for web design and development. He is the author of Responsive Web Design by Examples, where he covered his best approaches in developing responsive websites quickly with a framework.\",\"sameAs\":[\"https:\\\/\\\/thoriq.com\",\"https:\\\/\\\/x.com\\\/tfirdaus\"],\"jobTitle\":\"Web Developer\",\"url\":\"https:\\\/\\\/www.hongkiat.com\\\/blog\\\/author\\\/thoriq\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"How to Handle HTTP Requests in Flask - Hongkiat","description":"In our previous article, we covered how to create simple pages in Flask and use Jinja2 as the templating engine. Now, let's explore how Flask handles","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:\/\/www.hongkiat.com\/blog\/handle-http-requests-flask\/","og_locale":"en_US","og_type":"article","og_title":"How to Handle HTTP Requests in Flask","og_description":"In our previous article, we covered how to create simple pages in Flask and use Jinja2 as the templating engine. Now, let's explore how Flask handles","og_url":"https:\/\/www.hongkiat.com\/blog\/handle-http-requests-flask\/","og_site_name":"Hongkiat","article_publisher":"https:\/\/www.facebook.com\/hongkiatcom","article_published_time":"2024-10-25T13:00:55+00:00","article_modified_time":"2025-04-03T15:11:08+00:00","og_image":[{"url":"https:\/\/assets.hongkiat.com\/uploads\/handle-http-requests-flask\/flask-http-requests.jpg","type":"","width":"","height":""}],"author":"Thoriq Firdaus","twitter_card":"summary_large_image","twitter_creator":"@tfirdaus","twitter_site":"@hongkiat","twitter_misc":{"Written by":"Thoriq Firdaus","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.hongkiat.com\/blog\/handle-http-requests-flask\/#article","isPartOf":{"@id":"https:\/\/www.hongkiat.com\/blog\/handle-http-requests-flask\/"},"author":{"name":"Thoriq Firdaus","@id":"https:\/\/www.hongkiat.com\/blog\/#\/schema\/person\/e7948c7a175d211496331e4b6ce55807"},"headline":"How to Handle HTTP Requests in Flask","datePublished":"2024-10-25T13:00:55+00:00","dateModified":"2025-04-03T15:11:08+00:00","mainEntityOfPage":{"@id":"https:\/\/www.hongkiat.com\/blog\/handle-http-requests-flask\/"},"wordCount":585,"publisher":{"@id":"https:\/\/www.hongkiat.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.hongkiat.com\/blog\/handle-http-requests-flask\/#primaryimage"},"thumbnailUrl":"https:\/\/assets.hongkiat.com\/uploads\/handle-http-requests-flask\/flask-http-requests.jpg","articleSection":["Coding"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.hongkiat.com\/blog\/handle-http-requests-flask\/","url":"https:\/\/www.hongkiat.com\/blog\/handle-http-requests-flask\/","name":"How to Handle HTTP Requests in Flask - Hongkiat","isPartOf":{"@id":"https:\/\/www.hongkiat.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.hongkiat.com\/blog\/handle-http-requests-flask\/#primaryimage"},"image":{"@id":"https:\/\/www.hongkiat.com\/blog\/handle-http-requests-flask\/#primaryimage"},"thumbnailUrl":"https:\/\/assets.hongkiat.com\/uploads\/handle-http-requests-flask\/flask-http-requests.jpg","datePublished":"2024-10-25T13:00:55+00:00","dateModified":"2025-04-03T15:11:08+00:00","description":"In our previous article, we covered how to create simple pages in Flask and use Jinja2 as the templating engine. Now, let's explore how Flask handles","breadcrumb":{"@id":"https:\/\/www.hongkiat.com\/blog\/handle-http-requests-flask\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hongkiat.com\/blog\/handle-http-requests-flask\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hongkiat.com\/blog\/handle-http-requests-flask\/#primaryimage","url":"https:\/\/assets.hongkiat.com\/uploads\/handle-http-requests-flask\/flask-http-requests.jpg","contentUrl":"https:\/\/assets.hongkiat.com\/uploads\/handle-http-requests-flask\/flask-http-requests.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/www.hongkiat.com\/blog\/handle-http-requests-flask\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hongkiat.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How to Handle HTTP Requests in Flask"}]},{"@type":"WebSite","@id":"https:\/\/www.hongkiat.com\/blog\/#website","url":"https:\/\/www.hongkiat.com\/blog\/","name":"Hongkiat","description":"Tech and Design Tips","publisher":{"@id":"https:\/\/www.hongkiat.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.hongkiat.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.hongkiat.com\/blog\/#organization","name":"Hongkiat.com","url":"https:\/\/www.hongkiat.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hongkiat.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.hongkiat.com\/blog\/wp-content\/uploads\/hkdc-logo-rect-yoast.jpg","contentUrl":"https:\/\/www.hongkiat.com\/blog\/wp-content\/uploads\/hkdc-logo-rect-yoast.jpg","width":1200,"height":799,"caption":"Hongkiat.com"},"image":{"@id":"https:\/\/www.hongkiat.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/hongkiatcom","https:\/\/x.com\/hongkiat","https:\/\/www.pinterest.com\/hongkiat\/"]},{"@type":"Person","@id":"https:\/\/www.hongkiat.com\/blog\/#\/schema\/person\/e7948c7a175d211496331e4b6ce55807","name":"Thoriq Firdaus","description":"Thoriq is a writer for Hongkiat.com with a passion for web design and development. He is the author of Responsive Web Design by Examples, where he covered his best approaches in developing responsive websites quickly with a framework.","sameAs":["https:\/\/thoriq.com","https:\/\/x.com\/tfirdaus"],"jobTitle":"Web Developer","url":"https:\/\/www.hongkiat.com\/blog\/author\/thoriq\/"}]}},"jetpack_featured_media_url":"https:\/\/","jetpack_shortlink":"https:\/\/wp.me\/p4uxU-iYU","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/posts\/72968","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/users\/113"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/comments?post=72968"}],"version-history":[{"count":4,"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/posts\/72968\/revisions"}],"predecessor-version":[{"id":73466,"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/posts\/72968\/revisions\/73466"}],"wp:attachment":[{"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/media?parent=72968"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/categories?post=72968"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/tags?post=72968"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/www.hongkiat.com\/blog\/wp-json\/wp\/v2\/topic?post=72968"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}