{"id":33073,"date":"2024-11-01T09:13:34","date_gmt":"2024-11-01T09:13:34","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=33073"},"modified":"2024-11-01T11:29:05","modified_gmt":"2024-11-01T11:29:05","slug":"course-on-spring-boot-backend-development-writing-github-action-scripts-ci","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/33073\/","title":{"rendered":"Course on Spring Boot Backend Development, Writing GitHub Action Scripts, CI"},"content":{"rendered":"<p><body><\/p>\n<p>This course focuses on how to develop backend applications using Spring Boot and how to write GitHub Actions scripts to build a continuous integration (CI) pipeline. By the end of this article, you will acquire the necessary skills to build web applications with Spring Boot and set up a CI\/CD process.<\/p>\n<h2>1. What is Spring Boot?<\/h2>\n<p>Spring Boot is a framework that helps you develop applications based on the Spring framework quickly and easily. It provides auto-configuration, embedded servers, and easy deployment features, allowing developers to add necessary functionalities conveniently.<\/p>\n<ul>\n<li><strong>Auto-configuration:<\/strong> Spring Boot automatically configures the application\u2019s settings, enabling developers to start projects with minimal configuration.<\/li>\n<li><strong>Embedded servers:<\/strong> It includes servers like Tomcat, Jetty, and Undertow, allowing applications to run without separate server setup.<\/li>\n<li><strong>Modularity:<\/strong> Spring Boot is designed to offer various starter packs, making it easy to add necessary libraries.<\/li>\n<\/ul>\n<h2>2. Setting Up the Spring Boot Development Environment<\/h2>\n<p>Let&#8217;s take a look at the environmental setup steps necessary to start with Spring Boot. This includes installing the JDK, setting up the IDE, and creating your Spring Boot project.<\/p>\n<h3>2.1 Install JDK<\/h3>\n<p>You need the Java Development Kit (JDK) to develop with Spring Boot. Install JDK version 11 or higher. You can download the JDK from the [Oracle official website](https:\/\/www.oracle.com\/java\/technologies\/javase-jdk11-downloads.html) or [OpenJDK](https:\/\/jdk.java.net\/).<\/p>\n<h3>2.2 Install IDE<\/h3>\n<p>The most commonly used IDEs for Spring Boot development are IntelliJ IDEA and Eclipse. The Community Edition of IntelliJ IDEA is available for free and offers powerful features. Download and install [IntelliJ IDEA](https:\/\/www.jetbrains.com\/idea\/download\/).<\/p>\n<h3>2.3 Create a Spring Boot Project<\/h3>\n<p>You can create a Spring Boot project using [Spring Initializr](https:\/\/start.spring.io\/). Follow the steps below to create your project:<\/p>\n<ol>\n<li>Visit the site and input as follows:<\/li>\n<ul>\n<li>Project: Maven Project<\/li>\n<li>Language: Java<\/li>\n<li>Spring Boot: Select the latest stable version<\/li>\n<li>Group: com.example<\/li>\n<li>Artifact: demo<\/li>\n<li>Dependencies: Add Spring Web, Spring Data JPA, H2 Database<\/li>\n<\/ul>\n<li>Click the \u201cGenerate\u201d button to download the project.<\/li>\n<li>Open the downloaded project in your IDE and run the build.<\/li>\n<\/ol>\n<h2>3. Creating a Simple REST API<\/h2>\n<p>Now, let&#8217;s create a simple REST API. We will implement basic CRUD (Create, Read, Update, Delete) functionalities.<\/p>\n<h3>3.1 Writing the Entity Class<\/h3>\n<p>First, we write the entity class that will be mapped to the database table. The class to be used is as follows:<\/p>\n<pre><code>package com.example.demo.model;\n\nimport javax.persistence.Entity;\nimport javax.persistence.GeneratedValue;\nimport javax.persistence.GenerationType;\nimport javax.persistence.Id;\n\n@Entity\npublic class Item {\n    @Id\n    @GeneratedValue(strategy = GenerationType.IDENTITY)\n    private Long id;\n    private String name;\n    private double price;\n\n    \/\/ Getters and setters\n    public Long getId() {\n        return id;\n    }\n\n    public void setId(Long id) {\n        this.id = id;\n    }\n\n    public String getName() {\n        return name;\n    }\n\n    public void setName(String name) {\n        this.name = name;\n    }\n\n    public double getPrice() {\n        return price;\n    }\n\n    public void setPrice(double price) {\n        this.price = price;\n    }\n}\n<\/code><\/pre>\n<h3>3.2 Writing the Repository<\/h3>\n<p>Next, we write a JPA repository to interact with the database:<\/p>\n<pre><code>package com.example.demo.repository;\n\nimport com.example.demo.model.Item;\nimport org.springframework.data.jpa.repository.JpaRepository;\n\npublic interface ItemRepository extends JpaRepository&lt;Item, Long&gt; {\n}\n<\/code><\/pre>\n<h3>3.3 Writing the Service Class<\/h3>\n<p>We will now add a service class to handle the business logic:<\/p>\n<pre><code>package com.example.demo.service;\n\nimport com.example.demo.model.Item;\nimport com.example.demo.repository.ItemRepository;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Service;\n\nimport java.util.List;\n\n@Service\npublic class ItemService {\n    @Autowired\n    private ItemRepository itemRepository;\n\n    public List<Item> findAll() {\n        return itemRepository.findAll();\n    }\n\n    public Item save(Item item) {\n        return itemRepository.save(item);\n    }\n\n    public Item update(Long id, Item item) {\n        item.setId(id);\n        return itemRepository.save(item);\n    }\n\n    public void delete(Long id) {\n        itemRepository.deleteById(id);\n    }\n}\n<\/code><\/pre>\n<h3>3.4 Writing the Controller<\/h3>\n<p>Finally, we create a controller to provide REST API endpoints:<\/p>\n<pre><code>package com.example.demo.controller;\n\nimport com.example.demo.model.Item;\nimport com.example.demo.service.ItemService;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.web.bind.annotation.*;\n\nimport java.util.List;\n\n@RestController\n@RequestMapping(\"\/api\/items\")\npublic class ItemController {\n    @Autowired\n    private ItemService itemService;\n\n    @GetMapping\n    public List&lt;Item&gt; getAllItems() {\n        return itemService.findAll();\n    }\n\n    @PostMapping\n    public Item createItem(@RequestBody Item item) {\n        return itemService.save(item);\n    }\n\n    @PutMapping(\"\/{id}\")\n    public Item updateItem(@PathVariable Long id, @RequestBody Item item) {\n        return itemService.update(id, item);\n    }\n\n    @DeleteMapping(\"\/{id}\")\n    public void deleteItem(@PathVariable Long id) {\n        itemService.delete(id);\n    }\n}\n<\/code><\/pre>\n<h2>4. Introduction to GitHub Actions<\/h2>\n<p>GitHub Actions is a tool that automates CI\/CD (Continuous Integration and Continuous Delivery) tasks in software development. It allows developers to set up automated execution of build, test, and deployment processes.<\/p>\n<h3>4.1 Reasons to Use GitHub Actions<\/h3>\n<ul>\n<li>Automated CI\/CD Setup: Build and deployment can occur automatically with every code change.<\/li>\n<li>Enhanced Collaboration: Multiple team members can work simultaneously with minimal conflicts.<\/li>\n<li>No Location Constraints: Operates on cloud infrastructure, so no server setup is required.<\/li>\n<\/ul>\n<h2>5. Setting Up GitHub Actions<\/h2>\n<p>Now, let&#8217;s create a GitHub Actions workflow file for the Spring Boot application.<\/p>\n<h3>5.1 Creating a GitHub Repository<\/h3>\n<p>First, create a new repository on GitHub and commit your Spring Boot project there.<\/p>\n<h3>5.2 Creating the Workflow File<\/h3>\n<p>Create a folder named \u201c.github\/workflows\u201d in the project root directory and create a file named \u201cci.yml\u201d inside that folder.<\/p>\n<pre><code>name: CI\n\non:\n  push:\n    branches:\n      - main\n\njobs:\n  build:\n    runs-on: ubuntu-latest\n\n    steps:\n      - name: Check out code\n        uses: actions\/checkout@v2\n\n      - name: Set up JDK 11\n        uses: actions\/setup-java@v2\n        with:\n          java-version: '11'\n\n      - name: Build with Maven\n        run: mvn clean install\n\n      - name: Run tests\n        run: mvn test\n<\/code><\/pre>\n<p>The above code runs GitHub Actions every time code is pushed to the `main` branch. Each step performs the following tasks:<\/p>\n<ul>\n<li>Checks out the code.<\/li>\n<li>Sets up JDK 11.<\/li>\n<li>Builds the project using Maven.<\/li>\n<li>Runs tests.<\/li>\n<\/ul>\n<h3>5.3 Confirming GitHub Actions Execution<\/h3>\n<p>After pushing the code, you can check the \u2018Actions\u2019 tab in GitHub to see if the workflow runs successfully. If any issues occur, you can check the logs to identify and fix errors.<\/p>\n<h2>6. Continuous Deployment (CD)<\/h2>\n<p>In this section, we will look at additional configuration for deployment automation. This includes using AWS, Heroku, or other cloud hosting services for deployment.<\/p>\n<h3>6.1 Deploying to AWS EC2<\/h3>\n<p>You can deploy your application by creating an AWS EC2 instance. Here\u2019s a simple setup method:<\/p>\n<ol>\n<li>Log in to AWS and create an instance from the EC2 dashboard.<\/li>\n<li>Set up a security group to allow port 8080.<\/li>\n<li>SSH into the instance to install JDK and Maven.<\/li>\n<li>Copy and run the application:<\/li>\n<pre><code>java -jar yourapp.jar\n<\/code><\/pre>\n<\/ol>\n<h3>6.2 Deploying to Heroku<\/h3>\n<p>Heroku is a platform that allows for easy and quick deployment of applications. You can deploy your application using the Heroku CLI:<\/p>\n<ol>\n<li>Install the Heroku CLI and log in.<\/li>\n<li>Create an application with the following command:<\/li>\n<pre><code>heroku create your-app-name\n<\/code><\/pre>\n<li>Push your code to deploy:<\/li>\n<pre><code>git push heroku main\n<\/code><\/pre>\n<\/ol>\n<h2>7. Conclusion<\/h2>\n<p>This course covered backend development using Spring Boot and how to automate CI\/CD setup with GitHub Actions. By combining the powerful features of Spring Boot with GitHub Actions, you can enhance your development efficiency. Through continuous learning and practice, I hope you can grow into a more advanced application developer.<\/p>\n<h2>8. References<\/h2>\n<ul>\n<li><a href=\"https:\/\/spring.io\/projects\/spring-boot\">Spring Boot Official Documentation<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/features\/actions\">GitHub Actions Official Documentation<\/a><\/li>\n<li><a href=\"https:\/\/aws.amazon.com\/ko\/ec2\/\">AWS EC2 Official Documentation<\/a><\/li>\n<li><a href=\"https:\/\/devcenter.heroku.com\/articles\/getting-started-with-java\">Heroku Java Application Deployment Guide<\/a><\/li>\n<\/ul>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This course focuses on how to develop backend applications using Spring Boot and how to write GitHub Actions scripts to build a continuous integration (CI) pipeline. By the end of this article, you will acquire the necessary skills to build web applications with Spring Boot and set up a CI\/CD process. 1. What is Spring &hellip; <a href=\"https:\/\/atmokpo.com\/w\/33073\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;Course on Spring Boot Backend Development, Writing GitHub Action Scripts, CI&#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-33073","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>Course on Spring Boot Backend Development, Writing GitHub Action Scripts, CI - \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\/33073\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Course on Spring Boot Backend Development, Writing GitHub Action Scripts, CI - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"This course focuses on how to develop backend applications using Spring Boot and how to write GitHub Actions scripts to build a continuous integration (CI) pipeline. By the end of this article, you will acquire the necessary skills to build web applications with Spring Boot and set up a CI\/CD process. 1. What is Spring &hellip; \ub354 \ubcf4\uae30 &quot;Course on Spring Boot Backend Development, Writing GitHub Action Scripts, CI&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/33073\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:13:34+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T11:29:05+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\/33073\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33073\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"Course on Spring Boot Backend Development, Writing GitHub Action Scripts, CI\",\"datePublished\":\"2024-11-01T09:13:34+00:00\",\"dateModified\":\"2024-11-01T11:29:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33073\/\"},\"wordCount\":855,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"Spring Boot backend development\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/33073\/\",\"url\":\"https:\/\/atmokpo.com\/w\/33073\/\",\"name\":\"Course on Spring Boot Backend Development, Writing GitHub Action Scripts, CI - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:13:34+00:00\",\"dateModified\":\"2024-11-01T11:29:05+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33073\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/33073\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/33073\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Course on Spring Boot Backend Development, Writing GitHub Action Scripts, CI\"}]},{\"@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":"Course on Spring Boot Backend Development, Writing GitHub Action Scripts, CI - \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\/33073\/","og_locale":"ko_KR","og_type":"article","og_title":"Course on Spring Boot Backend Development, Writing GitHub Action Scripts, CI - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"This course focuses on how to develop backend applications using Spring Boot and how to write GitHub Actions scripts to build a continuous integration (CI) pipeline. By the end of this article, you will acquire the necessary skills to build web applications with Spring Boot and set up a CI\/CD process. 1. What is Spring &hellip; \ub354 \ubcf4\uae30 \"Course on Spring Boot Backend Development, Writing GitHub Action Scripts, CI\"","og_url":"https:\/\/atmokpo.com\/w\/33073\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:13:34+00:00","article_modified_time":"2024-11-01T11:29:05+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\/33073\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/33073\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"Course on Spring Boot Backend Development, Writing GitHub Action Scripts, CI","datePublished":"2024-11-01T09:13:34+00:00","dateModified":"2024-11-01T11:29:05+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/33073\/"},"wordCount":855,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["Spring Boot backend development"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/33073\/","url":"https:\/\/atmokpo.com\/w\/33073\/","name":"Course on Spring Boot Backend Development, Writing GitHub Action Scripts, CI - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:13:34+00:00","dateModified":"2024-11-01T11:29:05+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/33073\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/33073\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/33073\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"Course on Spring Boot Backend Development, Writing GitHub Action Scripts, CI"}]},{"@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\/33073","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=33073"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/33073\/revisions"}],"predecessor-version":[{"id":33074,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/33073\/revisions\/33074"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=33073"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=33073"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=33073"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}