{"id":930,"date":"2024-02-23T13:57:42","date_gmt":"2024-02-23T13:57:42","guid":{"rendered":"https:\/\/learnpython.elegantwallp.com\/?p=930"},"modified":"2024-02-23T13:57:42","modified_gmt":"2024-02-23T13:57:42","slug":"python-requests-tutorial","status":"publish","type":"post","link":"https:\/\/learnpython.elegantwallp.com\/2024\/02\/23\/python-requests-tutorial\/","title":{"rendered":"Python Requests Tutorial"},"content":{"rendered":"\n<p>The&nbsp;<strong>Requests library in Python&nbsp;<\/strong>is one of the integral parts of Python for making HTTP requests to a specified URL. Whether it be REST APIs or Web Scraping, requests are a must to be learned for proceeding further with these technologies. When one makes a request to a URI, it returns a response. Python requests provide inbuilt functionalities for managing both the request and response.<\/p>\n\n\n\n<p>In this tutorial, we will explore What is&nbsp;<em><strong>Python Request Library<\/strong><\/em>, How to make&nbsp;<em><strong>GET requests&nbsp;<\/strong><\/em>through Python Requests, Response objects and Methods, Authentication using Python Requests, and so on.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/media.geeksforgeeks.org\/wp-content\/uploads\/20200312184442\/Python-Requests-Tutorials.jpg\" alt=\"python-requests-module\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-is-python-requests-module\">What is Python Requests module?<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Requests is an Apache2 Licensed HTTP library, that allows to send HTTP\/1.1 requests using Python.<\/li>\n\n\n\n<li>To play with web, Python Requests is must. Whether it be hitting APIs, downloading entire facebook pages, and much more cool stuff, one will have to make a request to the URL.<\/li>\n\n\n\n<li>Requests play a major role is dealing with&nbsp;<a href=\"https:\/\/www.geeksforgeeks.org\/rest-api-introduction\/\" target=\"_blank\" rel=\"noreferrer noopener\">REST APIs<\/a>, and&nbsp;<a href=\"https:\/\/www.geeksforgeeks.org\/introduction-to-web-scraping\/\" target=\"_blank\" rel=\"noreferrer noopener\">Web Scraping<\/a>.<\/li>\n\n\n\n<li>Checkout an Example Python Script using Requests and Web Scraping \u2013&nbsp;<a href=\"https:\/\/www.geeksforgeeks.org\/implementing-web-scraping-python-beautiful-soup\/\" target=\"_blank\" rel=\"noreferrer noopener\">Implementing Web Scraping in Python with BeautifulSoup<\/a><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"install-requests\">Installing Requests<\/h2>\n\n\n\n<p>Requests installation depends on type of operating system on eis using, the basic command anywhere would be to open a command terminal and run,pip install requests<\/p>\n\n\n\n<p>The basic method for installation of requests on any operating system is to grab the base files and install requests manually and Requests is actively developed on GitHub, where the code is always available. For code \u2013&nbsp;<a href=\"https:\/\/github.com\/psf\/requests\" target=\"_blank\" rel=\"noreferrer noopener\">visit here<\/a>. You can either clone the public repository:git clone git:\/\/github.com\/psf\/requests.git<\/p>\n\n\n\n<p>Once you have a copy of the source, you can embed it in your own Python package, or install it into your site-packages easily:cd requestspip install <strong>.<\/strong><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>For more checkout \u2013\u00a0How to install requests in Python \u2013 For windows, linux, mac<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">Making a Request<\/h3>\n\n\n\n<p>Python requests module has several built-in methods to make Http requests to specified URI using GET, POST, PUT, PATCH or HEAD requests. A Http request is meant to either retrieve data from a specified URI or to push data to a server. It works as a request-response protocol between a client and a server. Let\u2019s demonstrate how to make a GET request to an endpoint. GET method is used to retrieve information from the given server using a given URI. The GET method sends the encoded user information appended to the page request. The page and the encoded information are separated by the \u2018?\u2019 character. For example:https:\/\/www.google.com\/search?q=hello<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"how-to-make-get-request-through-python-requests\">How to make GET request through Python Requests<\/h2>\n\n\n\n<p>Python\u2019s requests module provides in-built method called&nbsp;<strong>get()<\/strong>&nbsp;for making a GET request to a specified URI.<\/p>\n\n\n\n<p><strong>Syntax<\/strong>requests.get(url, params={key: value}, args)<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Example :<\/strong><\/h3>\n\n\n\n<p>Let\u2019s try making a request to github\u2019s APIs for example purposes.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Python3<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><code>import<\/code><code>requests <\/code><code>&nbsp;&nbsp;<\/code><code># Making a GET request <\/code><code>r <\/code><code>=<\/code><code>requests.get(<\/code><code>'<a href=\"https:\/\/api.github.com\/users\/naveenkrnl\">https:\/\/api.github.com\/users\/naveenkrnl<\/a>'<\/code><code>) <\/code><code>&nbsp;<\/code><code># check status code for response received <\/code><code># success code - 200 <\/code><code>print<\/code><code>(r) <\/code><code>&nbsp;<\/code><code># print content of request <\/code><code>print<\/code><code>(r.content)<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>save this file as request.py and through terminal run,python request.py<\/p>\n\n\n\n<p><strong>Output \u2013<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/media.geeksforgeeks.org\/wp-content\/uploads\/20200220005746\/python-requests-get-method.png\" alt=\"python-requests-get-method\"\/><\/figure>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>For more, visit \u2013\u00a0GET method \u2013 Python requests<\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"http-request-methods\">Http Request Methods<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Method<\/th><th>Description<\/th><\/tr><\/thead><tbody><tr><td><a href=\"https:\/\/www.geeksforgeeks.org\/get-method-python-requests\/\">GET<\/a><\/td><td>GET method is used to retrieve information from the given server using a given URI.<\/td><\/tr><tr><td><a href=\"https:\/\/www.geeksforgeeks.org\/post-method-python-requests\/\">POST<\/a><\/td><td>POST request method requests that a web server accepts the data enclosed in the body of the request message, most likely for storing it<\/td><\/tr><tr><td><a href=\"https:\/\/www.geeksforgeeks.org\/put-method-python-requests\/\">PUT<\/a><\/td><td>The PUT method requests that the enclosed entity be stored under the supplied URI. If the URI refers to an already existing resource, it is modified and if the URI does not point to an existing resource, then the server can create the resource with that URI.<\/td><\/tr><tr><td><a href=\"https:\/\/www.geeksforgeeks.org\/delete-method-python-requests\/\">DELETE<\/a><\/td><td>The DELETE method deletes the specified resource<\/td><\/tr><tr><td><a href=\"https:\/\/www.geeksforgeeks.org\/head-method-python-requests\/\">HEAD<\/a><\/td><td>The HEAD method asks for a response identical to that of a GET request, but without the response body.<\/td><\/tr><tr><td><a href=\"https:\/\/www.geeksforgeeks.org\/patch-method-python-requests\/\">PATCH<\/a><\/td><td>It is used for modify capabilities. The PATCH request only needs to contain the changes to the resource, not the complete resource<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"response-object\">Response object<\/h2>\n\n\n\n<p>When one makes a request to a URI, it returns a response. This Response object in terms of python is returned by requests.method(), method being \u2013 get, post, put, etc. Response is a powerful object with lots of functions and attributes that assist in normalizing data or creating ideal portions of code. For example,&nbsp;<strong>response.status_code<\/strong>&nbsp;returns the status code from the headers itself, and one can check if the request was processed successfully or not. Response object can be used to imply lots of features, methods, and functionalities.<\/p>\n\n\n\n<p><strong>Example :<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Python3<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><code># import requests module <\/code><code>import<\/code><code>requests <\/code><code># Making a get request <\/code><code>response <\/code><code>=<\/code><code>requests.get(<\/code><code>'<a href=\"https:\/\/api.github.com\/\">https:\/\/api.github.com\/<\/a>'<\/code><code>) <\/code><code># print request object <\/code><code>print<\/code><code>(response.url) <\/code><code># print status code <\/code><code>print<\/code><code>(response.status_code)<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Save this file as request.py, and run using below commandPython request.py<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/media.geeksforgeeks.org\/wp-content\/uploads\/20200302191237\/response-python-requests.png\" alt=\"response-python-requests\"\/><\/figure>\n\n\n\n<p>Status code 200 indicates that request was made successfully.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"response-methods\">Response Methods<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Method<\/th><th>Description<\/th><\/tr><\/thead><tbody><tr><td><a href=\"https:\/\/www.geeksforgeeks.org\/response-headers-python-requests\/\" target=\"_blank\" rel=\"noreferrer noopener\">response.headers<\/a><\/td><td>response.headers returns a dictionary of response headers.<\/td><\/tr><tr><td><a href=\"https:\/\/www.geeksforgeeks.org\/response-encoding-python-requests\/\" target=\"_blank\" rel=\"noreferrer noopener\">response.encoding<\/a><\/td><td>response.encoding returns the encoding used to decode response.content.<\/td><\/tr><tr><td><a href=\"https:\/\/geeksforgeeks.org\/response-elapsed-python-requests\/\" target=\"_blank\" rel=\"noreferrer noopener\">response.elapsed<\/a><\/td><td>response.elapsed returns a timedelta object with the time elapsed from sending the request to the arrival of the response.<\/td><\/tr><tr><td><a href=\"https:\/\/www.geeksforgeeks.org\/response-close-python-requests\/\">response.close()<\/a><\/td><td>response.close() closes the connection to the server.<\/td><\/tr><tr><td><a href=\"https:\/\/www.geeksforgeeks.org\/response-content-python-requests\/\">response.content<\/a><\/td><td>response.content returns the content of the response, in bytes.<\/td><\/tr><tr><td><a href=\"https:\/\/www.geeksforgeeks.org\/response-cookies-python-requests\/\">response.cookies<\/a><\/td><td>response.cookies returns a CookieJar object with the cookies sent back from the server.<\/td><\/tr><tr><td><a href=\"https:\/\/www.geeksforgeeks.org\/response-history-python-requests\/\">response.history<\/a><\/td><td>response.history returns a list of response objects holding the history of request (url).<\/td><\/tr><tr><td><a href=\"https:\/\/www.geeksforgeeks.org\/response-is_permanent_redirect-python-requests\/\">response.is_permanent_redirect<\/a><\/td><td>response.is_permanent_redirect returns True if the response is the permanent redirected url, otherwise False.<\/td><\/tr><tr><td><a href=\"https:\/\/www.geeksforgeeks.org\/response-is_redirect-python-requests\/\">response.is_redirect<\/a><\/td><td>response.is_redirect returns True if the response was redirected, otherwise False.<\/td><\/tr><tr><td><a href=\"https:\/\/www.geeksforgeeks.org\/response-iter_content-python-requests\/\">response.iter_content()<\/a><\/td><td>response.iter_content() iterates over the response.content.<\/td><\/tr><tr><td><a href=\"https:\/\/www.geeksforgeeks.org\/response-json-python-requests\/\">response.json()<\/a><\/td><td>response.json() returns a JSON object of the result (if the result was written in JSON format, if not it raises an error).<\/td><\/tr><tr><td><a href=\"https:\/\/www.geeksforgeeks.org\/response-url-python-requests\/\">response.url<\/a><\/td><td>response.url returns the URL of the response.<\/td><\/tr><tr><td><a href=\"https:\/\/www.geeksforgeeks.org\/response-text-python-requests\/\">response.text<\/a><\/td><td>response.text returns the content of the response, in unicode.<\/td><\/tr><tr><td><a href=\"https:\/\/www.geeksforgeeks.org\/response-status_code-python-requests\/\">response.status_code<\/a><\/td><td>response.status_code returns a number that indicates the status (200 is OK, 404 is Not Found).<\/td><\/tr><tr><td><a href=\"https:\/\/www.geeksforgeeks.org\/response-request-python-requests\/\">response.request<\/a><\/td><td>response.request returns the request object that requested this response.<\/td><\/tr><tr><td><a href=\"https:\/\/www.geeksforgeeks.org\/response-reason-python-requests\/\">response.reason<\/a><\/td><td>response.reason returns a text corresponding to the status code.<\/td><\/tr><tr><td><a href=\"https:\/\/www.geeksforgeeks.org\/response-raise_for_status-python-requests\/\">response.raise_for_status()<\/a><\/td><td>response.raise_for_status() returns an HTTPError object if an error has occurred during the process.<\/td><\/tr><tr><td><a href=\"https:\/\/www.geeksforgeeks.org\/response-ok-python-requests\/\">response.ok<\/a><\/td><td>response.ok returns True if status_code is less than 200, otherwise False.<\/td><\/tr><tr><td><a href=\"https:\/\/www.geeksforgeeks.org\/response-links-python-requests\/\">response.links<\/a><\/td><td>response.links returns the header links.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"authentication-using-python-requests\">Authentication using Python Requests<\/h2>\n\n\n\n<p>Authentication refers to giving a user permissions to access a particular resource. Since, everyone can\u2019t be allowed to access data from every URL, one would require authentication primarily. To achieve this authentication, typically one provides authentication data through Authorization header or a custom header defined by server.<\/p>\n\n\n\n<p><strong>Example \u2013<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Python3<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><code># import requests module <\/code><code>import<\/code><code>requests <\/code><code>from<\/code><code>requests.auth <\/code><code>import<\/code><code>HTTPBasicAuth <\/code><code># Making a get request <\/code><code>response <\/code><code>=<\/code><code>requests.get(<\/code><code>'<a href=\"https:\/\/api.github.com\/\">https:\/\/api.github.com<\/a> \/ user, '<\/code><code>, <\/code><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code>auth <\/code><code>=<\/code><code>HTTPBasicAuth(<\/code><code>'user'<\/code><code>, <\/code><code>'pass'<\/code><code>)) <\/code><code># print request object <\/code><code>print<\/code><code>(response)<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Replace \u201cuser\u201d and \u201cpass\u201d with your username and password. It will authenticate the request and return a response 200 or else it will return error 403.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/media.geeksforgeeks.org\/wp-content\/uploads\/20200302201336\/authenticate-python-requests.png\" alt=\"authenticate-python-requests\"\/><\/figure>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>For more visit \u2013\u00a0Authentication using Python requests<\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"ssl-certificate-verification\">SSL Certificate Verification<\/h2>\n\n\n\n<p>Requests verifies SSL certificates for HTTPS requests, just like a web browser. SSL Certificates are small data files that digitally bind a cryptographic key to an organization\u2019s details. Often, an website with a SSL certificate is termed as secure website. By default, SSL verification is enabled, and Requests will throw a SSLError if it\u2019s unable to verify the certificate.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Disable SSL certificate verification<\/h3>\n\n\n\n<p>Let us try to access a website with an invalid SSL certificate, using Python requests<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Python3<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><code># import requests module <\/code><code>import<\/code><code>requests <\/code><code># Making a get request <\/code><code>response <\/code><code>=<\/code><code>requests.get(<\/code><code>'<a href=\"https:\/\/expired.badssl.com\/\">https:\/\/expired.badssl.com\/<\/a>'<\/code><code>) <\/code><code># print request object <\/code><code>print<\/code><code>(response)<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><strong>Output :-<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/media.geeksforgeeks.org\/wp-content\/uploads\/20200304152114\/ssl-certificate-verification-python-requests.png\" alt=\"ssl-certificate-verification-python-requests\"\/><\/figure>\n\n\n\n<p>This website doesn\u2019t have SSL setup so it raises this error. one can also pass the link to the certificate for validation via python requests only.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Python3<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><code># import requests module <\/code><code>import<\/code><code>requests <\/code><code># Making a get request <\/code><code>response <\/code><code>=<\/code><code>requests.get(<\/code><code>'<a href=\"https:\/\/github.com\/\">https:\/\/github.com<\/a>'<\/code><code>, verify <\/code><code>=<\/code><code>'\/path\/to\/certfile'<\/code><code>) <\/code><code># print request object <\/code><code>print<\/code><code>(response)<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>This would work in case the path provided is correct for SSL certificate for github.com.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>For more visit-&nbsp;<a href=\"https:\/\/www.geeksforgeeks.org\/ssl-certificate-verification-python-requests\/\" target=\"_blank\" rel=\"noreferrer noopener\">SSL Certificate Verification \u2013 Python requests<\/a><\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"session-objects\">Session Objects<\/h2>\n\n\n\n<p>Session object allows one to persist certain parameters across requests. It also persists cookies across all requests made from the Session instance and will use urllib3\u2019s connection pooling. So if several requests are being made to the same host, the underlying TCP connection will be reused, which can result in a significant performance increase. A session object all the methods as of requests.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Using Session Objects<\/h3>\n\n\n\n<p>Let us illustrate use of session objects by setting a cookie to a url and then making a request again to check if cookie is set.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Python3<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><code># import requests module <\/code><code>import<\/code><code>requests <\/code><code>&nbsp;<\/code><code># create a session object <\/code><code>s <\/code><code>=<\/code><code>requests.Session() <\/code><code>&nbsp;<\/code><code># make a get request <\/code><code>s.get(<\/code><code>'<a href=\"https:\/\/httpbin.org\/cookies\/set\/sessioncookie\/123456789\">https:\/\/httpbin.org\/cookies\/set\/sessioncookie\/123456789<\/a>'<\/code><code>) <\/code><code>&nbsp;<\/code><code># again make a get request <\/code><code>r <\/code><code>=<\/code><code>s.get(<\/code><code>'<a href=\"https:\/\/httpbin.org\/cookies\">https:\/\/httpbin.org\/cookies<\/a>'<\/code><code>) <\/code><code>&nbsp;<\/code><code># check if cookie is still set <\/code><code>print<\/code><code>(r.text)<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><strong>Output:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/media.geeksforgeeks.org\/wp-content\/uploads\/20200304155904\/session-objects-python-requests.png\" alt=\"session-objects-python-requests\"\/><\/figure>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>For more, visit \u2013&nbsp;<a href=\"https:\/\/www.geeksforgeeks.org\/session-objects-python-requests\/\" target=\"_blank\" rel=\"noreferrer noopener\">Session Objects \u2013 Python requests<\/a><\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"conclusion\">Conclusion<\/h2>\n\n\n\n<p>Python Request Library is a powerful tool for making HTTP requests and interacting with web APIs. In this tutorial, we covered the basics of sending GET and POST requests, handling parameters and headers, and managing response data. The library\u2019s simplicity and intuitive design make it accessible for both beginners and experienced developers.<\/p>\n\n\n\n<p>Don&#8217;t miss your chance to ride the wave of the data revolution! Every industry is scaling new heights by tapping into the power of data. Sharpen your skills and become a part of the hottest trend in the 21st century.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The&nbsp;Requests library in Python&nbsp;is one of the integral parts of Python for making HTTP requests to a specified URL. Whether it be REST APIs or Web Scraping, requests are a must to be learned for proceeding further with these technologies. When one makes a request to a URI, it returns a response. Python requests provide [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[95],"tags":[],"class_list":["post-930","post","type-post","status-publish","format-standard","hentry","category-requests"],"_links":{"self":[{"href":"https:\/\/learnpython.elegantwallp.com\/wp-json\/wp\/v2\/posts\/930","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/learnpython.elegantwallp.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/learnpython.elegantwallp.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/learnpython.elegantwallp.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/learnpython.elegantwallp.com\/wp-json\/wp\/v2\/comments?post=930"}],"version-history":[{"count":1,"href":"https:\/\/learnpython.elegantwallp.com\/wp-json\/wp\/v2\/posts\/930\/revisions"}],"predecessor-version":[{"id":931,"href":"https:\/\/learnpython.elegantwallp.com\/wp-json\/wp\/v2\/posts\/930\/revisions\/931"}],"wp:attachment":[{"href":"https:\/\/learnpython.elegantwallp.com\/wp-json\/wp\/v2\/media?parent=930"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/learnpython.elegantwallp.com\/wp-json\/wp\/v2\/categories?post=930"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/learnpython.elegantwallp.com\/wp-json\/wp\/v2\/tags?post=930"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}