{"id":33189,"date":"2024-11-01T09:14:25","date_gmt":"2024-11-01T09:14:25","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=33189"},"modified":"2024-11-01T11:28:33","modified_gmt":"2024-11-01T11:28:33","slug":"spring-boot-backend-development-course-implementing-login-and-logout-with-spring-security-testing-logout-execution","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/33189\/","title":{"rendered":"Spring Boot Backend Development Course, Implementing Login and Logout with Spring Security, Testing Logout Execution"},"content":{"rendered":"<p><body><\/p>\n<h2>Introduction<\/h2>\n<p>\n        This course covers backend development using Spring Boot. In particular, we will learn how to implement login\/logout functionality and a registration system through Spring Security. By the end of this course, you will be able to build a complete user authentication and authorization system. This guide is prepared for those who are new to Spring Boot and Security, and it explains the process step by step.\n    <\/p>\n<h2>Basic Environment Setup<\/h2>\n<p>\n        Before starting a Spring Boot project, we need to set up the necessary environment. JDK and Maven should be installed, and it is recommended to use an IDE such as IntelliJ IDEA or Eclipse.\n    <\/p>\n<ul>\n<li>Install JDK 8 or higher<\/li>\n<li>Install Maven or Gradle<\/li>\n<li>Install IDE (e.g., IntelliJ IDEA, Eclipse)<\/li>\n<\/ul>\n<h3>Creating a Spring Boot Project<\/h3>\n<p>\n        You can create a Spring Boot project using <a href=\"https:\/\/start.spring.io\/\">Spring Initializr<\/a>. Select the following options to generate the project:\n    <\/p>\n<ul>\n<li>Project: Maven Project<\/li>\n<li>Language: Java<\/li>\n<li>Spring Boot: 2.5.x (or latest version)<\/li>\n<li>Dependencies: Spring Web, Spring Security, Spring Data JPA, H2 Database<\/li>\n<\/ul>\n<p>\n        After generating the project, download the zip file and extract it in your desired directory. Open the project in your IDE and check if the necessary libraries are included.\n    <\/p>\n<h2>Spring Security Configuration<\/h2>\n<p>\n        We will implement basic authentication functionality using Spring Security. First, write the <code>SecurityConfig<\/code> class to define user authentication settings.\n    <\/p>\n<pre>\n        <code>java\n        import org.springframework.context.annotation.Bean;\n        import org.springframework.context.annotation.Configuration;\n        import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;\n        import org.springframework.security.config.annotation.web.builders.HttpSecurity;\n        import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;\n        import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;\n        import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;\n        import org.springframework.security.crypto.password.PasswordEncoder;\n\n        @Configuration\n        @EnableWebSecurity\n        public class SecurityConfig extends WebSecurityConfigurerAdapter {\n            @Override\n            protected void configure(AuthenticationManagerBuilder auth) throws Exception {\n                auth.inMemoryAuthentication()\n                    .withUser(\"user\").password(passwordEncoder().encode(\"password\")).roles(\"USER\")\n                    .and()\n                    .withUser(\"admin\").password(passwordEncoder().encode(\"admin\")).roles(\"ADMIN\");\n            }\n\n            @Override\n            protected void configure(HttpSecurity http) throws Exception {\n                http\n                    .authorizeRequests()\n                    .antMatchers(\"\/\", \"\/register\", \"\/login\").permitAll()\n                    .anyRequest().authenticated()\n                    .and()\n                    .formLogin()\n                    .loginPage(\"\/login\")\n                    .permitAll()\n                    .and()\n                    .logout()\n                    .permitAll();\n            }\n\n            @Bean\n            public PasswordEncoder passwordEncoder() {\n                return new BCryptPasswordEncoder();\n            }\n        }\n        <\/code>\n    <\/pre>\n<h3>Implementing Registration Functionality<\/h3>\n<p>\n        We will implement a REST API for user registration. We will use JPA to store user information. Create a <code>User<\/code> entity class to define user data.\n    <\/p>\n<pre>\n        <code>java\n        import javax.persistence.Entity;\n        import javax.persistence.GeneratedValue;\n        import javax.persistence.GenerationType;\n        import javax.persistence.Id;\n\n        @Entity\n        public class User {\n            @Id\n            @GeneratedValue(strategy = GenerationType.IDENTITY)\n            private Long id;\n            private String username;\n            private String password;\n            private String role;\n\n            \/\/ getters and setters\n        }\n        <\/code>\n    <\/pre>\n<h3>Creating UserRepository Interface<\/h3>\n<p>\n        Create a Repository interface to store user information.\n    <\/p>\n<pre>\n        <code>java\n        import org.springframework.data.jpa.repository.JpaRepository;\n\n        public interface UserRepository extends JpaRepository<User, Long> {\n            User findByUsername(String username);\n        }\n        <\/code>\n    <\/pre>\n<h3>Implementing Registration REST API<\/h3>\n<p>\n        Write a controller class to handle registration. It will store the user&#8217;s information in the database based on what the user inputs.\n    <\/p>\n<pre>\n        <code>java\n        import org.springframework.beans.factory.annotation.Autowired;\n        import org.springframework.web.bind.annotation.*;\n\n        @RestController\n        @RequestMapping(\"\/api\")\n        public class UserController {\n            @Autowired\n            private UserRepository userRepository;\n\n            @PostMapping(\"\/register\")\n            public String register(@RequestBody User user) {\n                user.setPassword(new BCryptPasswordEncoder().encode(user.getPassword()));\n                userRepository.save(user);\n                return \"Registration successful!\";\n            }\n        }\n        <\/code>\n    <\/pre>\n<h2>Testing Login and Logout Functionality<\/h2>\n<p>\n        Now we are ready to test the login and logout functionalities. You can use tools like Postman or cURL to test the REST APIs.\n    <\/p>\n<h3>Testing Registration<\/h3>\n<p>\n        To test the registration API, send a POST request like the following:\n    <\/p>\n<pre>\n        <code>bash\n        curl -X POST http:\/\/localhost:8080\/api\/register -H \"Content-Type: application\/json\" -d '{\"username\":\"testuser\", \"password\":\"testpassword\"}'\n        <\/code>\n    <\/pre>\n<p>\n        You will receive &#8220;Registration successful!&#8221; in response.\n    <\/p>\n<h3>Testing Login<\/h3>\n<p>\n        The login test will proceed with the following POST request.\n    <\/p>\n<pre>\n        <code>bash\n        curl -X POST -d \"username=testuser&amp;password=testpassword\" http:\/\/localhost:8080\/login\n        <\/code>\n    <\/pre>\n<p>\n        If the request is successful, you will receive a login success message as a response.\n    <\/p>\n<h3>Testing Logout<\/h3>\n<p>\n        The logout test will proceed with the following GET request.\n    <\/p>\n<pre>\n        <code>bash\n        curl -X GET http:\/\/localhost:8080\/logout\n        <\/code>\n    <\/pre>\n<p>\n        If the request is successful, you will receive a logout success message as a response.\n    <\/p>\n<h2>Conclusion<\/h2>\n<p>\n        In this course, we have implemented backend development using Spring Boot, along with login, logout, and registration functionalities through Spring Security. Through this process, you have gained the basics needed to create a secure web application. We encourage you to continue using Spring Boot and Security to implement more complex features.\n    <\/p>\n<h3>Additional Resources<\/h3>\n<ul>\n<li><a href=\"https:\/\/spring.io\/projects\/spring-boot\">Official Spring Boot Site<\/a><\/li>\n<li><a href=\"https:\/\/spring.io\/projects\/spring-security\">Official Spring Security Site<\/a><\/li>\n<li><a href=\"https:\/\/www.baeldung.com\/spring-security-registration\">Detailed Guide for Registration (Baeldung)<\/a><\/li>\n<\/ul>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction This course covers backend development using Spring Boot. In particular, we will learn how to implement login\/logout functionality and a registration system through Spring Security. By the end of this course, you will be able to build a complete user authentication and authorization system. This guide is prepared for those who are new to &hellip; <a href=\"https:\/\/atmokpo.com\/w\/33189\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;Spring Boot Backend Development Course, Implementing Login and Logout with Spring Security, Testing Logout Execution&#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":[131],"tags":[],"class_list":["post-33189","post","type-post","status-publish","format-standard","hentry","category-spring-boot-backend-development"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Spring Boot Backend Development Course, Implementing Login and Logout with Spring Security, Testing Logout Execution - \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\/33189\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Spring Boot Backend Development Course, Implementing Login and Logout with Spring Security, Testing Logout Execution - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"Introduction This course covers backend development using Spring Boot. In particular, we will learn how to implement login\/logout functionality and a registration system through Spring Security. By the end of this course, you will be able to build a complete user authentication and authorization system. This guide is prepared for those who are new to &hellip; \ub354 \ubcf4\uae30 &quot;Spring Boot Backend Development Course, Implementing Login and Logout with Spring Security, Testing Logout Execution&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/33189\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:14:25+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T11:28:33+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\/33189\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33189\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"Spring Boot Backend Development Course, Implementing Login and Logout with Spring Security, Testing Logout Execution\",\"datePublished\":\"2024-11-01T09:14:25+00:00\",\"dateModified\":\"2024-11-01T11:28:33+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33189\/\"},\"wordCount\":466,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"Spring Boot backend development\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/33189\/\",\"url\":\"https:\/\/atmokpo.com\/w\/33189\/\",\"name\":\"Spring Boot Backend Development Course, Implementing Login and Logout with Spring Security, Testing Logout Execution - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:14:25+00:00\",\"dateModified\":\"2024-11-01T11:28:33+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33189\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/33189\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/33189\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Spring Boot Backend Development Course, Implementing Login and Logout with Spring Security, Testing Logout Execution\"}]},{\"@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":"Spring Boot Backend Development Course, Implementing Login and Logout with Spring Security, Testing Logout Execution - \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\/33189\/","og_locale":"ko_KR","og_type":"article","og_title":"Spring Boot Backend Development Course, Implementing Login and Logout with Spring Security, Testing Logout Execution - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"Introduction This course covers backend development using Spring Boot. In particular, we will learn how to implement login\/logout functionality and a registration system through Spring Security. By the end of this course, you will be able to build a complete user authentication and authorization system. This guide is prepared for those who are new to &hellip; \ub354 \ubcf4\uae30 \"Spring Boot Backend Development Course, Implementing Login and Logout with Spring Security, Testing Logout Execution\"","og_url":"https:\/\/atmokpo.com\/w\/33189\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:14:25+00:00","article_modified_time":"2024-11-01T11:28:33+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\/33189\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/33189\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"Spring Boot Backend Development Course, Implementing Login and Logout with Spring Security, Testing Logout Execution","datePublished":"2024-11-01T09:14:25+00:00","dateModified":"2024-11-01T11:28:33+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/33189\/"},"wordCount":466,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["Spring Boot backend development"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/33189\/","url":"https:\/\/atmokpo.com\/w\/33189\/","name":"Spring Boot Backend Development Course, Implementing Login and Logout with Spring Security, Testing Logout Execution - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:14:25+00:00","dateModified":"2024-11-01T11:28:33+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/33189\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/33189\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/33189\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"Spring Boot Backend Development Course, Implementing Login and Logout with Spring Security, Testing Logout Execution"}]},{"@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\/33189","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=33189"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/33189\/revisions"}],"predecessor-version":[{"id":33190,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/33189\/revisions\/33190"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=33189"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=33189"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=33189"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}