{"id":37233,"date":"2024-11-01T09:55:56","date_gmt":"2024-11-01T09:55:56","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=37233"},"modified":"2024-11-01T11:36:05","modified_gmt":"2024-11-01T11:36:05","slug":"java-android-app-development-course-cloud-firestore","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/37233\/","title":{"rendered":"Java Android App Development Course, Cloud Firestore"},"content":{"rendered":"<p><body><\/p>\n<article>\n<header>\n<p>In this post, we will take a detailed look at how to develop Android apps using Java and how to store data using Google Cloud Firestore.<\/p>\n<\/header>\n<section>\n<h2>1. What is Cloud Firestore?<\/h2>\n<p>Cloud Firestore is Google&#8217;s NoSQL cloud database that supports real-time data synchronization and offline capabilities. Firestore can scale horizontally and is also referred to as a real-time database. It can be easily used across various platforms and is particularly easy to integrate with mobile applications.<\/p>\n<p>Firestore uses the concept of collections and documents for data storage. A collection contains multiple documents, and a document is a unit of data consisting of key-value pairs. This structure makes data modeling very flexible.<\/p>\n<\/section>\n<section>\n<h2>2. Key Features of Firestore<\/h2>\n<ul>\n<li>Real-time data synchronization<\/li>\n<li>Offline support<\/li>\n<li>Data protection through security rules<\/li>\n<li>Scalability and flexibility<\/li>\n<li>Support for various languages and platforms<\/li>\n<\/ul>\n<\/section>\n<section>\n<h2>3. Setting Up Firestore<\/h2>\n<h3>3.1. Creating a Firebase Project<\/h3>\n<p>The first step is to create a new project in the Firebase console. Follow the steps below:<\/p>\n<ol>\n<li>Go to the <a href=\"https:\/\/firebase.google.com\/\" target=\"_blank\" rel=\"noopener\">Firebase website<\/a> and log in.<\/li>\n<li>Click the &#8216;Add Project&#8217; button and enter the required information.<\/li>\n<li>Firebase Analytics is optional, so set it up only if needed.<\/li>\n<li>Once the project is created, navigate to the &#8216;Firestore Database&#8217; menu and activate Firestore.<\/li>\n<li>Set up security rules and choose the database mode.<\/li>\n<\/ol>\n<h3>3.2. Adding Firestore in Android Studio<\/h3>\n<p>After setting up the Firebase project, create a project in Android Studio. Use Gradle to add the necessary Firebase dependencies.<\/p>\n<p><code><br \/>\n            implementation \"com.google.firebase:firebase-firestore-ktx:24.0.0\"<br \/>\n        <\/code><\/p>\n<p>You are now ready to initialize Firebase and use the Firestore instance.<\/p>\n<p>Additionally, you need to add the <code>google-services.json<\/code> file to the <code>app<\/code> folder of your project to initialize Firebase. This file can be downloaded during the Firebase project creation.<\/p>\n<p>You can initialize Firestore with the following code snippet:<\/p>\n<p><code><br \/>\n            FirebaseOptions options = new FirebaseOptions.Builder()<br \/>\n                    .setApplicationId(\"YOUR_APP_ID\") \/\/ Required<br \/>\n                    .setApiKey(\"YOUR_API_KEY\") \/\/ Required<br \/>\n                    .setDatabaseUrl(\"YOUR_DATABASE_URL\") \/\/ Required<br \/>\n                    .setProjectId(\"YOUR_PROJECT_ID\") \/\/ Required<br \/>\n                    .build();<br \/>\n            FirebaseApp.initializeApp(context, options);<br \/>\n        <\/code><\/p>\n<p>To get the Firestore instance, you can use the following code:<\/p>\n<p><code><br \/>\n            FirebaseFirestore db = FirebaseFirestore.getInstance();<br \/>\n        <\/code><\/p>\n<section>\n<h2>4. Basic CRUD Operations in Firestore<\/h2>\n<p>Data handling in Firestore is carried out through the Create, Read, Update, Delete (CRUD) processes.<\/p>\n<h3>4.1. Adding Data (Create)<\/h3>\n<p>To add data, you can use the <code>set<\/code> or <code>add<\/code> methods.<\/p>\n<p>The <code>set<\/code> method is used to explicitly create or update a document. The below example shows how to add user information to Firestore:<\/p>\n<p><code><br \/>\n                Map<String, Object> user = new HashMap<>();<br \/>\n                user.put(\"first\", \"John\");<br \/>\n                user.put(\"last\", \"Doe\");<br \/>\n                user.put(\"age\", 30);<\/p>\n<p>                db.collection(\"users\").document(\"userID123\")<br \/>\n                        .set(user)<br \/>\n                        .addOnSuccessListener(new OnSuccessListener<Void>() {<br \/>\n                            @Override<br \/>\n                            public void onSuccess(Void aVoid) {<br \/>\n                                Log.d(TAG, \"DocumentSnapshot added with ID: \" + \"userID123\");<br \/>\n                            }<br \/>\n                        })<br \/>\n                        .addOnFailureListener(new OnFailureListener() {<br \/>\n                            @Override<br \/>\n                            public void onFailure(@NonNull Exception e) {<br \/>\n                                Log.w(TAG, \"Error adding document\", e);<br \/>\n                            }<br \/>\n                        });<br \/>\n            <\/Void><\/String,><\/code><\/p>\n<h3>4.2. Reading Data (Read)<\/h3>\n<p>To read the data of a document, you can use the <code>get<\/code> method. Below is an example of reading the data of a specific document:<\/p>\n<p><code><br \/>\n                DocumentReference docRef = db.collection(\"users\").document(\"userID123\");<br \/>\n                docRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {<br \/>\n                    @Override<br \/>\n                    public void onComplete(@NonNull Task<DocumentSnapshot> task) {<br \/>\n                        if (task.isSuccessful()) {<br \/>\n                            DocumentSnapshot document = task.getResult();<br \/>\n                            if (document.exists()) {<br \/>\n                                Log.d(TAG, \"Document data: \" + document.getData());<br \/>\n                            } else {<br \/>\n                                Log.d(TAG, \"No such document\");<br \/>\n                            }<br \/>\n                        } else {<br \/>\n                            Log.d(TAG, \"get failed with \", task.getException());<br \/>\n                        }<br \/>\n                    }<br \/>\n                });<br \/>\n            <\/DocumentSnapshot><\/DocumentSnapshot><\/code><\/p>\n<h3>4.3. Updating Data (Update)<\/h3>\n<p>To update an existing document, use the <code>update<\/code> method:<\/p>\n<p><code><br \/>\n                DocumentReference docRef = db.collection(\"users\").document(\"userID123\");<br \/>\n                docRef.update(\"age\", 31)<br \/>\n                        .addOnSuccessListener(new OnSuccessListener<Void>() {<br \/>\n                            @Override<br \/>\n                            public void onSuccess(Void aVoid) {<br \/>\n                                Log.d(TAG, \"DocumentSnapshot successfully updated!\");<br \/>\n                            }<br \/>\n                        })<br \/>\n                        .addOnFailureListener(new OnFailureListener() {<br \/>\n                            @Override<br \/>\n                            public void onFailure(@NonNull Exception e) {<br \/>\n                                Log.w(TAG, \"Error updating document\", e);<br \/>\n                            }<br \/>\n                        });<br \/>\n            <\/Void><\/code><\/p>\n<h3>4.4. Deleting Data (Delete)<\/h3>\n<p>To delete a document, use the <code>delete<\/code> method:<\/p>\n<p><code><br \/>\n                db.collection(\"users\").document(\"userID123\")<br \/>\n                        .delete()<br \/>\n                        .addOnSuccessListener(new OnSuccessListener<Void>() {<br \/>\n                            @Override<br \/>\n                            public void onSuccess(Void aVoid) {<br \/>\n                                Log.d(TAG, \"DocumentSnapshot successfully deleted!\");<br \/>\n                            }<br \/>\n                        })<br \/>\n                        .addOnFailureListener(new OnFailureListener() {<br \/>\n                            @Override<br \/>\n                            public void onFailure(@NonNull Exception e) {<br \/>\n                                Log.w(TAG, \"Error deleting document\", e);<br \/>\n                            }<br \/>\n                        });<br \/>\n            <\/Void><\/code><br \/>\n<\/section>\n<section>\n<h2>5. Firestore Real-time Database Functionality<\/h2>\n<p>One of the powerful features of Firestore is its real-time data synchronization capability. Below is how to receive real-time updates of data changes using Firestore listeners:<\/p>\n<p><code><br \/>\n                db.collection(\"users\")<br \/>\n                        .document(\"userID123\")<br \/>\n                        .addSnapshotListener(new EventListener<DocumentSnapshot>() {<br \/>\n                            @Override<br \/>\n                            public void onEvent(@Nullable DocumentSnapshot documentSnapshot,<br \/>\n                                                @Nullable FirebaseFirestoreException e) {<br \/>\n                                if (e != null) {<br \/>\n                                    Log.w(TAG, \"Listen failed.\", e);<br \/>\n                                    return;<br \/>\n                                }<\/p>\n<p>                                if (documentSnapshot != null && documentSnapshot.exists()) {<br \/>\n                                    Log.d(TAG, \"Current data: \" + documentSnapshot.getData());<br \/>\n                                } else {<br \/>\n                                    Log.d(TAG, \"Current data: null\");<br \/>\n                                }<br \/>\n                            }<br \/>\n                        });<br \/>\n            <\/DocumentSnapshot><\/code><br \/>\n<\/section>\n<section>\n<h2>6. Setting Security Rules<\/h2>\n<p>You must set up security rules for Firestore to enhance the security of the database. By default, all users are granted read and write access to the data. You can manage user authentication and permissions by setting security rules.<\/p>\n<p>For example, you can require user authentication and allow users to read or write only their own data. An example is as follows:<\/p>\n<p><code><br \/>\n                rules_version = '2';<br \/>\n                service cloud.firestore {<br \/>\n                    match \/databases\/{database}\/documents {<br \/>\n                        match \/users\/{userId} {<br \/>\n                            allow read, write: if request.auth != null && request.auth.uid == userId;<br \/>\n                        }<br \/>\n                    }<br \/>\n                }<br \/>\n            <\/code><br \/>\n<\/section>\n<section>\n<h2>7. Conclusion<\/h2>\n<p>In this tutorial, we explored how to develop Android apps using Java and integrate with Cloud Firestore. Firestore offers various features and is used by many developers as a suitable data store for mobile applications.<\/p>\n<p>The real-time data synchronization feature and offline support of Firestore are conducive to enhancing user experience. The security rules of Firebase also ensure the stability of data.<\/p>\n<p>I hope this post helps you in your Android app development. If you have any further questions, please leave a comment!<\/p>\n<\/section>\n<\/section>\n<\/article>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this post, we will take a detailed look at how to develop Android apps using Java and how to store data using Google Cloud Firestore. 1. What is Cloud Firestore? Cloud Firestore is Google&#8217;s NoSQL cloud database that supports real-time data synchronization and offline capabilities. Firestore can scale horizontally and is also referred to &hellip; <a href=\"https:\/\/atmokpo.com\/w\/37233\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;Java Android App Development Course, Cloud Firestore&#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":[137],"tags":[],"class_list":["post-37233","post","type-post","status-publish","format-standard","hentry","category-java-android-app-development"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Java Android App Development Course, Cloud Firestore - \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\/37233\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Java Android App Development Course, Cloud Firestore - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"In this post, we will take a detailed look at how to develop Android apps using Java and how to store data using Google Cloud Firestore. 1. What is Cloud Firestore? Cloud Firestore is Google&#8217;s NoSQL cloud database that supports real-time data synchronization and offline capabilities. Firestore can scale horizontally and is also referred to &hellip; \ub354 \ubcf4\uae30 &quot;Java Android App Development Course, Cloud Firestore&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/37233\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:55:56+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T11:36: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=\"4\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/atmokpo.com\/w\/37233\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/37233\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"Java Android App Development Course, Cloud Firestore\",\"datePublished\":\"2024-11-01T09:55:56+00:00\",\"dateModified\":\"2024-11-01T11:36:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/37233\/\"},\"wordCount\":581,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"Java Android app development\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/37233\/\",\"url\":\"https:\/\/atmokpo.com\/w\/37233\/\",\"name\":\"Java Android App Development Course, Cloud Firestore - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:55:56+00:00\",\"dateModified\":\"2024-11-01T11:36:05+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/37233\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/37233\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/37233\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Java Android App Development Course, Cloud Firestore\"}]},{\"@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":"Java Android App Development Course, Cloud Firestore - \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\/37233\/","og_locale":"ko_KR","og_type":"article","og_title":"Java Android App Development Course, Cloud Firestore - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"In this post, we will take a detailed look at how to develop Android apps using Java and how to store data using Google Cloud Firestore. 1. What is Cloud Firestore? Cloud Firestore is Google&#8217;s NoSQL cloud database that supports real-time data synchronization and offline capabilities. Firestore can scale horizontally and is also referred to &hellip; \ub354 \ubcf4\uae30 \"Java Android App Development Course, Cloud Firestore\"","og_url":"https:\/\/atmokpo.com\/w\/37233\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:55:56+00:00","article_modified_time":"2024-11-01T11:36: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":"4\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/atmokpo.com\/w\/37233\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/37233\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"Java Android App Development Course, Cloud Firestore","datePublished":"2024-11-01T09:55:56+00:00","dateModified":"2024-11-01T11:36:05+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/37233\/"},"wordCount":581,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["Java Android app development"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/37233\/","url":"https:\/\/atmokpo.com\/w\/37233\/","name":"Java Android App Development Course, Cloud Firestore - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:55:56+00:00","dateModified":"2024-11-01T11:36:05+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/37233\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/37233\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/37233\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"Java Android App Development Course, Cloud Firestore"}]},{"@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\/37233","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=37233"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/37233\/revisions"}],"predecessor-version":[{"id":37234,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/37233\/revisions\/37234"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=37233"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=37233"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=37233"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}