{"id":6211,"date":"2022-11-17T04:28:35","date_gmt":"2022-11-17T04:28:35","guid":{"rendered":"https:\/\/studysection.com\/blog\/?p=6211"},"modified":"2022-11-18T06:31:57","modified_gmt":"2022-11-18T06:31:57","slug":"chain-of-responsibility-in-php","status":"publish","type":"post","link":"https:\/\/studysection.com\/blog\/chain-of-responsibility-in-php\/","title":{"rendered":"Chain of Responsibility in PHP"},"content":{"rendered":"<p>A chain of responsibility is a behavioral design pattern that allows a request to pass through a chain of potential employees until the request is fulfilled.<\/p>\n<p>This pattern allows you to resolve requests without connecting the sender class to a specific receiver class. The runtime chain can be dynamically configured with any processor that follows the standard processor interface.<\/p>\n<h2>Use of patterns in PHP<\/h2>\n<p>Usage example: Chain of responsibility is very common in various <a href=\"https:\/\/studysection.com\/blog\/php-best-practices\/\">PHP<\/a> frameworks. Arguably, one of the most popular examples of using this pattern in PHP is the HTTP Request Middleware described in PSR-15.<\/p>\n<p>Identity: This pattern is characterized by the behavior of a group of objects that indirectly call the same methods on other objects, while all objects follow a common interface.<\/p>\n<p><strong>Example<\/strong><br \/>\nThe most common use of chain of responsibility (CoR) in the PHP world is found in HTTP request middleware. This is implemented by the most popular PHP frameworks and even standardized as part of PSR-15.<\/p>\n<p>Here&#8217;s how it works: HTTP requests must go through middleware for application processing. Each middleware can refuse further processing of the request or forward it to the next middleware. After the request has successfully passed through all the middleware, the main processor of the application can finally complete it.<\/p>\n<p>You can see that this approach is counter to the original intent of the pattern. Indeed, in a typical implementation, the request is passed down the chain only if the current processor cannot handle it, while the middleware passes the request down the chain if it thinks that the application can handle the request. However, since middleware objects are chained, the whole concept is still considered an instance of the CoR pattern.<br \/>\n<code>&lt;?php<br \/>\nnamespace Webner\\COR\\RW;<br \/>\n\/**<br \/>\n* The classic CoR pattern is a single role for the objects that compose a<br \/>\n* chain of operations.<br \/>\n*<br \/>\n* The base Middleware class declares an interface for middleware binding<br \/>\n* something in a chain.<br \/>\n*\/<br \/>\nabstract class CorMiddleware<br \/>\n{<br \/>\n\/**<br \/>\n* @var CorMiddleware<br \/>\n*\/<br \/>\nprivate $next;<br \/>\n\/**<br \/>\n* This method is use to build a cor of middleware objects.<br \/>\n*\/<br \/>\npublic function linkedWith(CorMiddleware $next): CorMiddleware<br \/>\n{<br \/>\n$this-&gt;next = $next;<br \/>\nreturn $next;<br \/>\n}<br \/>\npublic function checked(string $username, string $password): bool<br \/>\n{<br \/>\nif (!$this-&gt;next) {<br \/>\nreturn true;<br \/>\n}<br \/>\nreturn $this-&gt;next-&gt;checked($username, $password);<br \/>\n}<br \/>\n}<br \/>\n\/**<br \/>\n* Middleware checks whether a user with given credentials is exist or not.<br \/>\n*\/<br \/>\nclass UserVerifyMiddleware extends CorMiddleware<br \/>\n{<br \/>\nprivate $server;<br \/>\npublic function __construct(Server $server)<br \/>\n{<br \/>\n$this-&gt;server = $server;<br \/>\n}<br \/>\npublic function checked(string $username, string $password): bool<br \/>\n{<br \/>\nif (!$this-&gt;server-&gt;hasEmail($username)) {<br \/>\necho \"User verify Middleware==== This user is not registered! Please registered\\n\";<br \/>\nreturn false;<br \/>\n}<br \/>\nif (!$this-&gt;server-&gt;isValidPassword($username, $password)) {<br \/>\necho \"User verify Middleware====  Wrong is password! Please try again!\\n\";<br \/>\nreturn false;<br \/>\n}<br \/>\nreturn parent::checked($username, $password);<br \/>\n}<br \/>\n}<br \/>\n\/**<br \/>\n* This Middleware checks whether a user associated with the request<br \/>\n* has sufficient permissions.<br \/>\n*\/<br \/>\nclass Role_Checked_Middleware extends CorMiddleware<br \/>\n{<br \/>\npublic function checked(string $username, string $password): bool<br \/>\n{<br \/>\nif ($username === \"gopi.chand@webners.com\") {<br \/>\necho \"Welcome Admin!\\n\";<br \/>\nreturn true;<br \/>\n}<br \/>\necho \"Hello, user!\\n\";<br \/>\nreturn parent::checked($username, $password);<br \/>\n}<br \/>\n}<br \/>\n\/**<br \/>\n* Middleware checks whether there are too many failed login<br \/>\n* requests.<br \/>\n*\/<br \/>\nclass Throttling_Middleware extends CorMiddleware<br \/>\n{<br \/>\nprivate $request_Per_Minute;<br \/>\nprivate $request;<br \/>\nprivate $current_Time;<br \/>\npublic function __construct(int $request_Per_Minute)<br \/>\n{<br \/>\n$this-&gt;request_Per_Minute = $request_Per_Minute;<br \/>\n$this-&gt;current_Time = time();<br \/>\n}<br \/>\npublic function checked(string $username, string $password): bool<br \/>\n{<br \/>\nif (time() &gt; $this-&gt;current_Time + 60) {<br \/>\n$this-&gt;request = 0;<br \/>\n$this-&gt;current_Time = time();<br \/>\n}<br \/>\n$this-&gt;request++;<br \/>\nif ($this-&gt;request &gt; $this-&gt;request_Per_Minute) {<br \/>\necho \"You have exceed the limit. Please try again later!\\n\";<br \/>\ndie();<br \/>\n}<br \/>\nreturn parent::checked($username, $password);<br \/>\n}<br \/>\n}<br \/>\nclass Server<br \/>\n{<br \/>\nprivate $users = [];<br \/>\n\/**<br \/>\n* @var CorMiddleware<br \/>\n*\/<br \/>\nprivate $middleware;<br \/>\npublic function setMiddleware(CorMiddleware $middleware): void<br \/>\n{<br \/>\n$this-&gt;middleware = $middleware;<br \/>\n}<br \/>\npublic function loggin(string $username, string $password): bool<br \/>\n{<br \/>\nif ($this-&gt;middleware-&gt;checked($username, $password)) {<br \/>\necho \"Server: Authorization has been successful!\\n\";<br \/>\n\/\/ Do something useful for authorized users.<br \/>\nreturn true;<br \/>\n}<br \/>\nreturn false;<br \/>\n}<br \/>\npublic function registeration(string $username, string $password): void<br \/>\n{<br \/>\n$this-&gt;users[$username] = $password;<br \/>\n}<br \/>\npublic function hasEmail(string $username): bool<br \/>\n{<br \/>\nreturn isset($this-&gt;users[$username]);<br \/>\n}<br \/>\npublic function isValidPassword(string $username, string $password): bool<br \/>\n{<br \/>\nreturn $this-&gt;users[$username] === $password;<br \/>\n}<br \/>\n}<br \/>\n\/**<br \/>\n* The client code.<br \/>\n*\/<br \/>\n$server = new Server();<br \/>\n$server-&gt;registeration(\"gopi.chand@webners.com\", \"admin1234@\");<br \/>\n$server-&gt;registeration(\"webnerstest@webners.com\", \"123456\");<br \/>\n$middleware = new Throttling_Middleware(2);<br \/>\n$middleware<br \/>\n-&gt;linkedWith(new UserVerifyMiddleware($server))<br \/>\n-&gt;linkedWith(new Role_Checked_Middleware());<br \/>\n$server-&gt;setMiddleware($middleware);<br \/>\ndo {<br \/>\necho \"\\n Please Enter Your Username:\\n\";<br \/>\n$username = readline();<br \/>\necho \"Enter your password:\\n\";<br \/>\n$password = readline();<br \/>\n$success = $server-&gt;loggin($username, $password);<br \/>\n} while (!$success);<br \/>\n<\/code><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/studysection.com\/blog\/wp-content\/uploads\/2022\/11\/php1.png\" alt=\"php1\" \/><br \/>\n<img decoding=\"async\" src=\"https:\/\/studysection.com\/blog\/wp-content\/uploads\/2022\/11\/php2.png\" alt=\"php2\" \/><\/p>\n<p><small><em>Study Section provides a big list of certification exams through its online platform. The <a href=\"https:\/\/www.studysection.com\/french-language-and-concepts-advanced\">French Certification Exam<\/a> can help you to certify your skills to communicate in the French language. Whether you are new to the language or you are an expert in it, this French certification exam can test the ability of anybody\u2019s command over the French language.<\/em><\/small><\/p>\n","protected":false},"excerpt":{"rendered":"<p>A chain of responsibility is a behavioral design pattern that allows a request to pass through a chain of potential<\/p>\n","protected":false},"author":1,"featured_media":6212,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[200,817],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Chain of Responsibility in PHP a Design Pattern: StudySection Blog<\/title>\n<meta name=\"description\" content=\"A design pattern that allows a request to pass through a chain of potential employees until the request is fulfilled.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/studysection.com\/blog\/chain-of-responsibility-in-php\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Chain of Responsibility in PHP a Design Pattern: StudySection Blog\" \/>\n<meta property=\"og:description\" content=\"A design pattern that allows a request to pass through a chain of potential employees until the request is fulfilled.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/studysection.com\/blog\/chain-of-responsibility-in-php\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog Posts on famous people, innovations and educational topics\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/studysection\" \/>\n<meta property=\"article:published_time\" content=\"2022-11-17T04:28:35+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-11-18T06:31:57+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/studysection.com\/blog\/wp-content\/uploads\/2022\/11\/PHP.png\" \/>\n\t<meta property=\"og:image:width\" content=\"300\" \/>\n\t<meta property=\"og:image:height\" content=\"200\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"admin-studysection-blog\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@studysection\" \/>\n<meta name=\"twitter:site\" content=\"@studysection\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin-studysection-blog\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/studysection.com\/blog\/chain-of-responsibility-in-php\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/studysection.com\/blog\/chain-of-responsibility-in-php\/\"},\"author\":{\"name\":\"admin-studysection-blog\",\"@id\":\"https:\/\/studysection.com\/blog\/#\/schema\/person\/db367e2c29a12d1808fb1979edb3d402\"},\"headline\":\"Chain of Responsibility in PHP\",\"datePublished\":\"2022-11-17T04:28:35+00:00\",\"dateModified\":\"2022-11-18T06:31:57+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/studysection.com\/blog\/chain-of-responsibility-in-php\/\"},\"wordCount\":348,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/studysection.com\/blog\/#organization\"},\"keywords\":[\"php\",\"Responsibility\"],\"articleSection\":[\"Learn and Grow\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/studysection.com\/blog\/chain-of-responsibility-in-php\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/studysection.com\/blog\/chain-of-responsibility-in-php\/\",\"url\":\"https:\/\/studysection.com\/blog\/chain-of-responsibility-in-php\/\",\"name\":\"Chain of Responsibility in PHP a Design Pattern: StudySection Blog\",\"isPartOf\":{\"@id\":\"https:\/\/studysection.com\/blog\/#website\"},\"datePublished\":\"2022-11-17T04:28:35+00:00\",\"dateModified\":\"2022-11-18T06:31:57+00:00\",\"description\":\"A design pattern that allows a request to pass through a chain of potential employees until the request is fulfilled.\",\"breadcrumb\":{\"@id\":\"https:\/\/studysection.com\/blog\/chain-of-responsibility-in-php\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/studysection.com\/blog\/chain-of-responsibility-in-php\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/studysection.com\/blog\/chain-of-responsibility-in-php\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/studysection.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Chain of Responsibility in PHP\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/studysection.com\/blog\/#website\",\"url\":\"https:\/\/studysection.com\/blog\/\",\"name\":\"Blog Posts on famous people, innovations and educational topics\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/studysection.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/studysection.com\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/studysection.com\/blog\/#organization\",\"name\":\"StudySection\",\"url\":\"https:\/\/studysection.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/studysection.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/studysection.com\/blog\/wp-content\/uploads\/2021\/10\/studySection-logo.png\",\"contentUrl\":\"https:\/\/studysection.com\/blog\/wp-content\/uploads\/2021\/10\/studySection-logo.png\",\"width\":920,\"height\":440,\"caption\":\"StudySection\"},\"image\":{\"@id\":\"https:\/\/studysection.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/studysection\",\"https:\/\/twitter.com\/studysection\",\"https:\/\/www.instagram.com\/study.section\/\",\"https:\/\/www.linkedin.com\/company\/studysection\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/studysection.com\/blog\/#\/schema\/person\/db367e2c29a12d1808fb1979edb3d402\",\"name\":\"admin-studysection-blog\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/studysection.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/054ac87a6874df1932004239cd8eab36?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/054ac87a6874df1932004239cd8eab36?s=96&d=mm&r=g\",\"caption\":\"admin-studysection-blog\"},\"url\":\"https:\/\/studysection.com\/blog\/author\/admin-studysection-blog\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Chain of Responsibility in PHP a Design Pattern: StudySection Blog","description":"A design pattern that allows a request to pass through a chain of potential employees until the request is fulfilled.","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:\/\/studysection.com\/blog\/chain-of-responsibility-in-php\/","og_locale":"en_US","og_type":"article","og_title":"Chain of Responsibility in PHP a Design Pattern: StudySection Blog","og_description":"A design pattern that allows a request to pass through a chain of potential employees until the request is fulfilled.","og_url":"https:\/\/studysection.com\/blog\/chain-of-responsibility-in-php\/","og_site_name":"Blog Posts on famous people, innovations and educational topics","article_publisher":"https:\/\/www.facebook.com\/studysection","article_published_time":"2022-11-17T04:28:35+00:00","article_modified_time":"2022-11-18T06:31:57+00:00","og_image":[{"width":300,"height":200,"url":"https:\/\/studysection.com\/blog\/wp-content\/uploads\/2022\/11\/PHP.png","type":"image\/png"}],"author":"admin-studysection-blog","twitter_card":"summary_large_image","twitter_creator":"@studysection","twitter_site":"@studysection","twitter_misc":{"Written by":"admin-studysection-blog","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/studysection.com\/blog\/chain-of-responsibility-in-php\/#article","isPartOf":{"@id":"https:\/\/studysection.com\/blog\/chain-of-responsibility-in-php\/"},"author":{"name":"admin-studysection-blog","@id":"https:\/\/studysection.com\/blog\/#\/schema\/person\/db367e2c29a12d1808fb1979edb3d402"},"headline":"Chain of Responsibility in PHP","datePublished":"2022-11-17T04:28:35+00:00","dateModified":"2022-11-18T06:31:57+00:00","mainEntityOfPage":{"@id":"https:\/\/studysection.com\/blog\/chain-of-responsibility-in-php\/"},"wordCount":348,"commentCount":0,"publisher":{"@id":"https:\/\/studysection.com\/blog\/#organization"},"keywords":["php","Responsibility"],"articleSection":["Learn and Grow"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/studysection.com\/blog\/chain-of-responsibility-in-php\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/studysection.com\/blog\/chain-of-responsibility-in-php\/","url":"https:\/\/studysection.com\/blog\/chain-of-responsibility-in-php\/","name":"Chain of Responsibility in PHP a Design Pattern: StudySection Blog","isPartOf":{"@id":"https:\/\/studysection.com\/blog\/#website"},"datePublished":"2022-11-17T04:28:35+00:00","dateModified":"2022-11-18T06:31:57+00:00","description":"A design pattern that allows a request to pass through a chain of potential employees until the request is fulfilled.","breadcrumb":{"@id":"https:\/\/studysection.com\/blog\/chain-of-responsibility-in-php\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/studysection.com\/blog\/chain-of-responsibility-in-php\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/studysection.com\/blog\/chain-of-responsibility-in-php\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/studysection.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Chain of Responsibility in PHP"}]},{"@type":"WebSite","@id":"https:\/\/studysection.com\/blog\/#website","url":"https:\/\/studysection.com\/blog\/","name":"Blog Posts on famous people, innovations and educational topics","description":"","publisher":{"@id":"https:\/\/studysection.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/studysection.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/studysection.com\/blog\/#organization","name":"StudySection","url":"https:\/\/studysection.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/studysection.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/studysection.com\/blog\/wp-content\/uploads\/2021\/10\/studySection-logo.png","contentUrl":"https:\/\/studysection.com\/blog\/wp-content\/uploads\/2021\/10\/studySection-logo.png","width":920,"height":440,"caption":"StudySection"},"image":{"@id":"https:\/\/studysection.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/studysection","https:\/\/twitter.com\/studysection","https:\/\/www.instagram.com\/study.section\/","https:\/\/www.linkedin.com\/company\/studysection"]},{"@type":"Person","@id":"https:\/\/studysection.com\/blog\/#\/schema\/person\/db367e2c29a12d1808fb1979edb3d402","name":"admin-studysection-blog","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/studysection.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/054ac87a6874df1932004239cd8eab36?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/054ac87a6874df1932004239cd8eab36?s=96&d=mm&r=g","caption":"admin-studysection-blog"},"url":"https:\/\/studysection.com\/blog\/author\/admin-studysection-blog\/"}]}},"views":457,"_links":{"self":[{"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/posts\/6211"}],"collection":[{"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/comments?post=6211"}],"version-history":[{"count":6,"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/posts\/6211\/revisions"}],"predecessor-version":[{"id":6220,"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/posts\/6211\/revisions\/6220"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/media\/6212"}],"wp:attachment":[{"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/media?parent=6211"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/categories?post=6211"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/tags?post=6211"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}