{"id":33093,"date":"2024-11-01T09:13:43","date_gmt":"2024-11-01T09:13:43","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=33093"},"modified":"2024-11-01T11:29:00","modified_gmt":"2024-11-01T11:29:00","slug":"spring-boot-backend-development-course-blog-production-example-testing-api-execution","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/33093\/","title":{"rendered":"Spring Boot Backend Development Course, Blog Production Example, Testing API Execution"},"content":{"rendered":"<p><body><\/p>\n<p>Spring Boot is a framework that allows for fast and easy development of web applications based on Java. In this course, we will build a backend server using Spring Boot and implement a RESTful API through a blog creation example. Finally, we will also learn how to test the API execution.<\/p>\n<h2>1. Introduction to Spring Boot<\/h2>\n<p>Spring Boot is a technology that enables easy and rapid application development based on the Spring Framework. Using Spring Boot reduces complex configurations and allows for easy testing through an embedded server.<\/p>\n<ul>\n<li>Auto-configuration: Automatically performs basic configurations to reduce the need for developers to worry about settings.<\/li>\n<li>Embedded server: Supports embedded servers like Tomcat and Jetty, allowing development and testing without separate server installation.<\/li>\n<li>Starter dependencies: Provides starter dependencies that help easily add various functionalities.<\/li>\n<\/ul>\n<h2>2. Setting up the Development Environment<\/h2>\n<p>To use Spring Boot, you need a Java Development Kit (JDK) and a build tool like Maven or Gradle. Below are the installation methods for JDK and Maven.<\/p>\n<h3>2.1 Installing JDK<\/h3>\n<p>Install JDK version 8 or higher. You can download it from Oracle&#8217;s official website. After installation, check the installed version using the command below:<\/p>\n<pre><code>java -version<\/code><\/pre>\n<h3>2.2 Installing Maven<\/h3>\n<p>Maven is used to manage the dependencies of Spring Boot projects. Download and install it from the official Apache Maven website. After installation, check the installed version using the command below:<\/p>\n<pre><code>mvn -version<\/code><\/pre>\n<h3>2.3 Choosing an IDE<\/h3>\n<p>You can use IDEs such as IntelliJ IDEA, Eclipse, or Spring Tool Suite (STS). This course will explain using IntelliJ IDEA as the basis.<\/p>\n<h2>3. Creating a Spring Boot Project<\/h2>\n<p>A Spring Boot project can be easily created using Spring Initializr. Spring Initializr is a web application that automatically generates the basic structure of a Spring Boot application.<\/p>\n<h3>3.1 Accessing Spring Initializr<\/h3>\n<p>Access Spring Initializr through the link below:<br \/>\n<a href=\"https:\/\/start.spring.io\/\" target=\"_blank\" rel=\"noopener\">Spring Initializr<\/a><\/p>\n<h3>3.2 Project Configuration<\/h3>\n<ul>\n<li>Project: Maven Project<\/li>\n<li>Language: Java<\/li>\n<li>Spring Boot: Select the latest version<\/li>\n<li>Group: com.example<\/li>\n<li>Artifact: blog-api<\/li>\n<li>Name: blog-api<\/li>\n<li>Description: Blog API example<\/li>\n<li>Package name: com.example.blogapi<\/li>\n<li>Packaging: Jar<\/li>\n<li>Java: Select 11<\/li>\n<\/ul>\n<h3>3.3 Adding Dependencies<\/h3>\n<p>Add the necessary dependencies. Add the following dependencies:<\/p>\n<ul>\n<li>Spring Web<\/li>\n<li>Spring Data JPA<\/li>\n<li>H2 Database (or MySQL can be selected)<\/li>\n<\/ul>\n<p>After setting up, click the <strong>GENERATE<\/strong> button to download the ZIP file and unzip it in your desired location.<\/p>\n<h2>4. Understanding the Project Structure<\/h2>\n<p>The generated project folder structure is as follows:<\/p>\n<pre><code>\nblog-api\n \u251c\u2500\u2500 src\n \u2502    \u251c\u2500\u2500 main\n \u2502    \u2502    \u251c\u2500\u2500 java\n \u2502    \u2502    \u2502    \u2514\u2500\u2500 com\n \u2502    \u2502    \u2502         \u2514\u2500\u2500 example\n \u2502    \u2502    \u2502              \u2514\u2500\u2500 blogapi\n \u2502    \u2502    \u2502                   \u2514\u2500\u2500 BlogApiApplication.java\n \u2502    \u2502    \u2514\u2500\u2500 resources\n \u2502    \u2502         \u251c\u2500\u2500 application.properties\n \u2502    \u2502         \u2514\u2500\u2500 static\n \u2502    \u2514\u2500\u2500 test\n \u251c\u2500\u2500 pom.xml\n<\/code><\/pre>\n<h2>5. Creating a Domain Object<\/h2>\n<p>Now, let&#8217;s create a domain object to represent a blog post. We will create a <code>Post<\/code> class to define the attributes of the blog post.<\/p>\n<h3>5.1 Creating the Post Class<\/h3>\n<p>Create a <code>Post.java<\/code> file in the <code>src\/main\/java\/com\/example\/blogapi<\/code> folder:<\/p>\n<pre><code>\npackage com.example.blogapi;\n\nimport javax.persistence.Entity;\nimport javax.persistence.GeneratedValue;\nimport javax.persistence.GenerationType;\nimport javax.persistence.Id;\n\n@Entity\npublic class Post {\n    @Id\n    @GeneratedValue(strategy = GenerationType.IDENTITY)\n    private Long id;\n    private String title;\n    private String content;\n\n    \/\/ getters and setters\n}\n<\/code><\/pre>\n<h2>6. Creating a Repository Interface<\/h2>\n<p>To interact with the database, we will use a JPA repository. Create a <code>PostRepository<\/code> interface to implement CRUD functionality.<\/p>\n<h3>6.1 Creating the PostRepository Interface<\/h3>\n<p>Create a <code>PostRepository.java<\/code> file in the <code>src\/main\/java\/com\/example\/blogapi<\/code> folder:<\/p>\n<pre><code>\npackage com.example.blogapi;\n\nimport org.springframework.data.jpa.repository.JpaRepository;\n\npublic interface PostRepository extends JpaRepository<Post, Long> {\n}\n<\/code><\/pre>\n<h2>7. Creating a Service Class<\/h2>\n<p>Create a service class to handle business logic. We will create a <code>PostService<\/code> class to implement CRUD functionality for blog posts.<\/p>\n<h3>7.1 Creating the PostService Class<\/h3>\n<p>Create a <code>PostService.java<\/code> file in the <code>src\/main\/java\/com\/example\/blogapi<\/code> folder:<\/p>\n<pre><code>\npackage com.example.blogapi;\n\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Service;\nimport java.util.List;\n\n@Service\npublic class PostService {\n    @Autowired\n    private PostRepository postRepository;\n\n    public List<Post> getAllPosts() {\n        return postRepository.findAll();\n    }\n\n    public Post getPostById(Long id) {\n        return postRepository.findById(id).orElse(null);\n    }\n\n    public Post createPost(Post post) {\n        return postRepository.save(post);\n    }\n\n    public Post updatePost(Long id, Post post) {\n        Post existingPost = postRepository.findById(id).orElse(null);\n        if (existingPost != null) {\n            existingPost.setTitle(post.getTitle());\n            existingPost.setContent(post.getContent());\n            return postRepository.save(existingPost);\n        }\n        return null;\n    }\n\n    public void deletePost(Long id) {\n        postRepository.deleteById(id);\n    }\n}\n<\/code><\/pre>\n<h2>8. Creating a Controller Class<\/h2>\n<p>To handle requests from clients, we write a controller class to create a RESTful API.<\/p>\n<h3>8.1 Creating the PostController Class<\/h3>\n<p>Create a <code>PostController.java<\/code> file in the <code>src\/main\/java\/com\/example\/blogapi<\/code> folder:<\/p>\n<pre><code>\npackage com.example.blogapi;\n\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.http.HttpStatus;\nimport org.springframework.web.bind.annotation.*;\n\nimport java.util.List;\n\n@RestController\n@RequestMapping(\"\/api\/posts\")\npublic class PostController {\n    @Autowired\n    private PostService postService;\n\n    @GetMapping\n    public List<Post> getAllPosts() {\n        return postService.getAllPosts();\n    }\n\n    @GetMapping(\"\/{id}\")\n    public Post getPostById(@PathVariable Long id) {\n        return postService.getPostById(id);\n    }\n\n    @PostMapping\n    public Post createPost(@RequestBody Post post) {\n        return postService.createPost(post);\n    }\n\n    @PutMapping(\"\/{id}\")\n    public Post updatePost(@PathVariable Long id, @RequestBody Post post) {\n        return postService.updatePost(id, post);\n    }\n\n    @DeleteMapping(\"\/{id}\")\n    @ResponseStatus(HttpStatus.NO_CONTENT)\n    public void deletePost(@PathVariable Long id) {\n        postService.deletePost(id);\n    }\n}\n<\/code><\/pre>\n<h2>9. Configuring Application Properties<\/h2>\n<p>Edit the <code>application.properties<\/code> file to configure database connection and other settings.<\/p>\n<h3>9.1 H2 Database Configuration<\/h3>\n<p>Edit the <code>src\/main\/resources\/application.properties<\/code> file as follows:<\/p>\n<pre><code>\n# H2 Database\nspring.h2.console.enabled=true\nspring.datasource.url=jdbc:h2:mem:testdb\nspring.datasource.driverClassName=org.h2.Driver\nspring.datasource.username=sa\nspring.datasource.password=\nspring.jpa.database-platform=org.hibernate.dialect.H2Dialect\n<\/code><\/pre>\n<h2>10. Running the Application<\/h2>\n<p>Now that all configurations are complete, run the <code>BlogApiApplication.java<\/code> class in your IDE to start the application.<\/p>\n<h3>10.1 Accessing the H2 Console<\/h3>\n<p>If the application is running successfully, you can access the H2 console to check the database:<\/p>\n<ul>\n<li>Access <a href=\"http:\/\/localhost:8080\/h2-console\" target=\"_blank\" rel=\"noopener\">http:\/\/localhost:8080\/h2-console<\/a> in your web browser.<\/li>\n<li>Enter JDBC URL: <code>jdbc:h2:mem:testdb<\/code> and click the <strong>Connect<\/strong> button.<\/li>\n<\/ul>\n<h2>11. Testing the API<\/h2>\n<p>Now let&#8217;s test the API using Postman or cURL.<\/p>\n<h3>11.1 Installing Postman<\/h3>\n<p>Postman is a useful tool for testing APIs. After installing Postman, you can send requests as shown below.<\/p>\n<h3>11.2 API Request Examples<\/h3>\n<ul>\n<li><strong>GET \/api\/posts<\/strong>: Retrieve all posts<\/li>\n<li><strong>GET \/api\/posts\/{id}<\/strong>: Retrieve a specific post<\/li>\n<li><strong>POST \/api\/posts<\/strong>: Create a post<\/li>\n<li><strong>PUT \/api\/posts\/{id}<\/strong>: Update a post<\/li>\n<li><strong>DELETE \/api\/posts\/{id}<\/strong>: Delete a post<\/li>\n<\/ul>\n<h4>11.2.1 Example of a POST Request:<\/h4>\n<pre><code>\nPOST \/api\/posts\nContent-Type: application\/json\n\n{\n    \"title\": \"First Post\",\n    \"content\": \"Hello, this is the first post.\"\n}\n<\/code><\/pre>\n<h4>11.2.2 Example of a GET Request:<\/h4>\n<pre><code>\nGET \/api\/posts\n<\/code><\/pre>\n<h2>12. Conclusion<\/h2>\n<p>In this course, we learned how to implement a simple blog API using Spring Boot. We set up domain objects, repositories, services, and controllers, and examined the process of testing the API using Postman.<\/p>\n<p>Now you have laid the foundation to create a blog API using Spring Boot. You can expand your knowledge by implementing more features, transitioning to different databases, learning about deployment methods, and more.<\/p>\n<h2>References<\/h2>\n<ul>\n<li><a href=\"https:\/\/spring.io\/projects\/spring-boot\" target=\"_blank\" rel=\"noopener\">Official Spring Boot Documentation<\/a><\/li>\n<li><a href=\"https:\/\/postman.com\" target=\"_blank\" rel=\"noopener\">Download Postman<\/a><\/li>\n<li><a href=\"https:\/\/hibernate.org\/\" target=\"_blank\" rel=\"noopener\">Official Hibernate Documentation<\/a><\/li>\n<\/ul>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Spring Boot is a framework that allows for fast and easy development of web applications based on Java. In this course, we will build a backend server using Spring Boot and implement a RESTful API through a blog creation example. Finally, we will also learn how to test the API execution. 1. Introduction to Spring &hellip; <a href=\"https:\/\/atmokpo.com\/w\/33093\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;Spring Boot Backend Development Course, Blog Production Example, Testing API 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-33093","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, Blog Production Example, Testing API 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\/33093\/\" \/>\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, Blog Production Example, Testing API Execution - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"Spring Boot is a framework that allows for fast and easy development of web applications based on Java. In this course, we will build a backend server using Spring Boot and implement a RESTful API through a blog creation example. Finally, we will also learn how to test the API execution. 1. Introduction to Spring &hellip; \ub354 \ubcf4\uae30 &quot;Spring Boot Backend Development Course, Blog Production Example, Testing API Execution&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/33093\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:13:43+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T11:29:00+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=\"6\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/atmokpo.com\/w\/33093\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33093\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"Spring Boot Backend Development Course, Blog Production Example, Testing API Execution\",\"datePublished\":\"2024-11-01T09:13:43+00:00\",\"dateModified\":\"2024-11-01T11:29:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33093\/\"},\"wordCount\":760,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"Spring Boot backend development\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/33093\/\",\"url\":\"https:\/\/atmokpo.com\/w\/33093\/\",\"name\":\"Spring Boot Backend Development Course, Blog Production Example, Testing API Execution - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:13:43+00:00\",\"dateModified\":\"2024-11-01T11:29:00+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33093\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/33093\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/33093\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Spring Boot Backend Development Course, Blog Production Example, Testing API 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, Blog Production Example, Testing API 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\/33093\/","og_locale":"ko_KR","og_type":"article","og_title":"Spring Boot Backend Development Course, Blog Production Example, Testing API Execution - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"Spring Boot is a framework that allows for fast and easy development of web applications based on Java. In this course, we will build a backend server using Spring Boot and implement a RESTful API through a blog creation example. Finally, we will also learn how to test the API execution. 1. Introduction to Spring &hellip; \ub354 \ubcf4\uae30 \"Spring Boot Backend Development Course, Blog Production Example, Testing API Execution\"","og_url":"https:\/\/atmokpo.com\/w\/33093\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:13:43+00:00","article_modified_time":"2024-11-01T11:29:00+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":"6\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/atmokpo.com\/w\/33093\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/33093\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"Spring Boot Backend Development Course, Blog Production Example, Testing API Execution","datePublished":"2024-11-01T09:13:43+00:00","dateModified":"2024-11-01T11:29:00+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/33093\/"},"wordCount":760,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["Spring Boot backend development"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/33093\/","url":"https:\/\/atmokpo.com\/w\/33093\/","name":"Spring Boot Backend Development Course, Blog Production Example, Testing API Execution - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:13:43+00:00","dateModified":"2024-11-01T11:29:00+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/33093\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/33093\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/33093\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"Spring Boot Backend Development Course, Blog Production Example, Testing API 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\/33093","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=33093"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/33093\/revisions"}],"predecessor-version":[{"id":33094,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/33093\/revisions\/33094"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=33093"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=33093"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=33093"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}