{"id":1319,"date":"2026-09-14T16:06:38","date_gmt":"2026-09-14T16:06:38","guid":{"rendered":"https:\/\/boochlin.com\/?page_id=1319"},"modified":"2026-09-18T16:20:01","modified_gmt":"2026-09-18T16:20:01","slug":"funnyvote-evolution-guide","status":"publish","type":"page","link":"https:\/\/boochlin.com\/?page_id=1319","title":{"rendered":"Funny Vote \u5341\u5e74\u6f14\u9032\uff1a\u5f9e Java MVP \u5230 Compose \u8207\u96f2\u539f\u751f\u67b6\u69cb\uff08\u5168\u7cfb\u5217\u5c0e\u89bd\uff09"},"content":{"rendered":"<div class=\"wp-block-group\" style=\"background:#f4f6f8;padding:24px;border-left:5px solid #C14420;border-radius:4px;margin-bottom:32px\">\n<p style=\"font-size:1.15em;font-weight:bold;margin:0 0 10px 0;color:#222\">\u6a6b\u8de8\u5341\u5e74\u7684\u771f\u5be6\u958b\u6e90\u5c08\u6848\u6f14\u9032\u5168\u7d00\u9304\uff082016 \u2013 2026\uff09<\/p>\n<p style=\"margin:0;color:#555;line-height:1.7\">\u9019\u4e0d\u662f\u6559\u79d1\u66f8\u4e0a\u7684\u73a9\u5177 Demo\uff0c\u800c\u662f\u4e00\u500b\u771f\u5be6\u7d93\u6b77\u5341\u5e74\u9593 Android \u958b\u767c\u5178\u7bc4\u8f49\u79fb\u7684\u958b\u6e90\u6295\u7968 App\uff08Funny Vote\uff09\u3002\u5f9e 2016 \u5e74\u624b\u6572 30+ \u4efd XML \u8207 ButterKnife \u7684\u820a\u77f3\u5668\u6642\u4ee3\uff0c\u5230 MVP\u3001RxJava\u3001Kotlin 1.2\u3001Compose \u91cd\u7d44\u5730\u7344\u3001MVI \u55ae\u5411\u6d41\u3001Material 3 \u5168\u91cf\u5fa9\u523b\u3001\u4e94\u7f8e\u5143\u4f3a\u670d\u5668\u5012\u9589\u63db\u5fc3 Firebase\uff0c\u76f4\u5230 2026 \u5e74\u7531 Codex \u5be9\u67e5\u54e1\u63a5\u7ba1\u5de5\u4f4d\u3001\u9054\u6210 OWASP MASVS 100\/100 \u6eff\u5206\u8cc7\u5b89\u52a0\u56fa\u3002\u5168\u7cfb\u5217\u516b\u90e8\u66f2\u73fe\u5df2\u5168\u6578\u5b8c\u7d50\u3002<\/p>\n<\/div>\n<h2 class=\"wp-block-heading\">\u5168\u7cfb\u5217\u516b\u90e8\u66f2\u7ae0\u7bc0\u5c0e\u8b80<\/h2>\n<div class=\"wp-block-columns\" style=\"display:flex;flex-direction:column;gap:20px;margin-bottom:40px\">\n<div class=\"wp-block-group\" style=\"border:1px solid #e0e0e0;padding:20px;border-radius:8px;background:#ffffff;box-shadow:0 2px 4px rgba(0,0,0,0.03)\">\n<h3 style=\"margin-top:0;color:#C14420\"><a href=\"https:\/\/boochlin.com\/?p=289\" style=\"text-decoration:none;color:#C14420\">\u7b2c\u4e00\u90e8\u66f2\uff1a\u958b\u6e90\u539f\u9ede \u2013 \u5f9e\u96f6\u5230\u4e00\u7684\u7368\u7acb\u958b\u767c\u96dc\u8a18\uff1a\u958b\u6e90\u539f\u9ede\u8207\u4e0a\u67b6\u9a5a\u9b42\uff08\u4e00\uff09<\/a><\/h3>\n<p style=\"color:#666;font-size:0.95em;margin-bottom:8px\"><strong>\u5c0d\u61c9\u5206\u652f<\/strong>\uff1a<code>master<\/code> (2016) \uff5c <strong>\u6838\u5fc3\u6280\u8853<\/strong>\uff1aJava \/ \u539f\u751f Android SDK \/ ButterKnife \/ Retrofit \/ SQLite<\/p>\n<p style=\"margin:0;line-height:1.6\">\u7cfb\u5217\u59cb\u7956\u539f\u9ede\uff01\u7d00\u9304 2016 \u5e74\u5982\u4f55\u5f9e\u96f6\u55ae\u5e79\u51fa\u4e00\u500b\u6295\u7968 App\u3002\u5f9e\u88ab\u81ea\u5df1\u523b\u51fa\u4f86\u7684\u9ce5\u756b\u9762\u5687\u9000\u3001\u786c\u5b78 Inkscape \u756b Logo\u3001\u8a02\u5b9a\u7b2c\u4e00\u4efd SPEC\u3001\u62c9\u650f\u5f8c\u7aef\u670b\u53cb\u5165\u5751\uff0c\u5230\u767c\u5e03\u6642\u906d\u9047 Google Play \u653f\u7b56\u5be9\u67e5\u4e0b\u67b6\u9a5a\u9b42\u8a18\u3002\u6700\u771f\u5be6\u7684\u7368\u7acb\u958b\u767c\u8005\u8d77\u624b\u5f0f\u3002<\/p>\n<\/div>\n<div class=\"wp-block-group\" style=\"border:1px solid #e0e0e0;padding:20px;border-radius:8px;background:#ffffff;box-shadow:0 2px 4px rgba(0,0,0,0.03)\">\n<h3 style=\"margin-top:0;color:#C14420\"><a href=\"https:\/\/boochlin.com\/?p=320\" style=\"text-decoration:none;color:#C14420\">\u7b2c\u4e8c\u90e8\u66f2\uff1a\u67b6\u69cb\u521d\u9192 \u2013 Funny vote APP -MVP \u66f4\u65b0\u96dc\u8a18\uff08\u4e8c\uff09<\/a><\/h3>\n<p style=\"color:#666;font-size:0.95em;margin-bottom:8px\"><strong>\u5c0d\u61c9\u5206\u652f<\/strong>\uff1a<code>mvp<\/code> (2017) \uff5c <strong>\u6838\u5fc3\u6280\u8853<\/strong>\uff1aGoogle Architecture Blueprints \/ MVP \/ \u5951\u7d04\u5206\u96e2 \/ Dagger 2 \u4f9d\u8cf4\u6ce8\u5165<\/p>\n<p style=\"margin:0;line-height:1.6\">\u544a\u5225\u4e82\u4e03\u516b\u7cdf\u7684 God Activity\uff01\u5168\u5c08\u6848\u56b4\u683c\u843d\u5be6 Google \u5b98\u65b9 MVP \u85cd\u5716\uff0c\u5c07 View \u8207 Presenter \u8077\u8cac\u4ee5 Contract \u4ecb\u9762\u5fb9\u5e95\u89e3\u8026\uff1b\u75db\u5b9a\u601d\u75db\u780d\u6389\u6240\u6709\u6feb\u7528\u7684 static \u8b8a\u6578\uff1b\u5f15\u5165 Dagger 2 \u4f9d\u8cf4\u6ce8\u5165\uff0c\u4e26\u5efa\u7acb Mockito \u55ae\u5143\u6e2c\u8a66\u8207\u81ea\u52d5\u5316 CI \u6d41\u7a0b\u3002<\/p>\n<\/div>\n<div class=\"wp-block-group\" style=\"border:1px solid #e0e0e0;padding:20px;border-radius:8px;background:#ffffff;box-shadow:0 2px 4px rgba(0,0,0,0.03)\">\n<h3 style=\"margin-top:0;color:#C14420\"><a href=\"https:\/\/boochlin.com\/?p=1284\" style=\"text-decoration:none;color:#C14420\">\u7b2c\u4e09\u90e8\u66f2\uff1a\u73fe\u4ee3\u5148\u92d2 \u2013 Funny vote APP \u2013 Kotlin \u8207 RxJava \u7684\u9072\u4f86\u6551\u8d16\uff08\u4e09\uff09<\/a><\/h3>\n<p style=\"color:#666;font-size:0.95em;margin-bottom:8px\"><strong>\u5c0d\u61c9\u5206\u652f<\/strong>\uff1a<code>mvp_kotlin<\/code> &amp; <code>mvp_rxjava<\/code> (2018) \uff5c <strong>\u6838\u5fc3\u6280\u8853<\/strong>\uff1aKotlin 1.2 \/ Data Class \/ Kotlin Synthetics \/ RxJava 2<\/p>\n<p style=\"margin:0;line-height:1.6\">\u81ea\u6253\u81c9\u5341\u5e74\u524d\u300c\u770b\u8d77\u4f86\u592a\u7c21\u55ae\u61f6\u5f97\u7528\u300d\u7684\u72c2\u8a71\uff01\u7528 RxJava \u4e32\u6d41\u62c9\u76f4\u975e\u540c\u6b65\u56de\u547c\u5730\u7344\uff1b\u8de8\u5165 Kotlin \u4eab\u53d7 Data Class \u780d\u6389 200 \u884c POJO \u7684\u871c\u6708\u671f\uff1b\u76f4\u64ca Mockito \u649e\u7ffb Kotlin \u9810\u8a2d Final \u985e\u5225\u3001\u624b\u523b MockMaker \u64e6\u5c41\u80a1\u3001\u4ee5\u53ca Anko \u6158\u906d\u5b98\u65b9\u5ee2\u68c4\u7684\u80cc\u53db\u73fe\u5834\u3002<\/p>\n<\/div>\n<div class=\"wp-block-group\" style=\"border:1px solid #e0e0e0;padding:20px;border-radius:8px;background:#ffffff;box-shadow:0 2px 4px rgba(0,0,0,0.03)\">\n<h3 style=\"margin-top:0;color:#C14420\"><a href=\"https:\/\/boochlin.com\/?p=1288\" style=\"text-decoration:none;color:#C14420\">\u7b2c\u56db\u90e8\u66f2\uff1a\u5178\u7bc4\u8f49\u79fb \u2013 Funny vote APP \u2013 \u544a\u5225 XML \u8fce\u4f86 Compose\uff0c\u8207\u8e29\u9032\u91cd\u7d44\u5730\u7344\u96dc\u8a18\uff08\u56db\uff09<\/a><\/h3>\n<p style=\"color:#666;font-size:0.95em;margin-bottom:8px\"><strong>\u5c0d\u61c9\u5206\u652f<\/strong>\uff1a<code>kotlin-rewrite<\/code> (2024) \uff5c <strong>\u6838\u5fc3\u6280\u8853<\/strong>\uff1aJetpack Compose \/ \u5ba3\u544a\u5f0f UI \/ Layout Inspector \/ @Immutable \u7a69\u5b9a\u6027\u5206\u6790<\/p>\n<p style=\"margin:0;line-height:1.6\">\u8df3\u8e8d\u81f3 2024 \u5e74\uff01\u5fb9\u5e95\u544a\u5225 30+ \u4efd XML \u6392\u7248\uff0c\u4e00\u500b MainActivity \u6fc3\u7e2e\u81f3 32 \u884c\u7d14 Compose \u5bb9\u5668\u3002\u4f46\u5728 Samsung S23 \u5be6\u6a5f\u4e0a\u906d\u9047\u5e40\u7387\u5d29\u6f70\uff1a\u6df1\u6316 Kotlin \u6a19\u6e96 List \u88ab\u5224\u5b9a\u70ba Unstable \u5c0e\u81f4\u5168\u91cf\u91cd\u7d44\u3001\u8ff4\u5708\u5167\u533f\u540d Lambda \u64ca\u7a7f Skip \u512a\u5316\u7684\u5927\u5751\u3002<\/p>\n<\/div>\n<div class=\"wp-block-group\" style=\"border:1px solid #e0e0e0;padding:20px;border-radius:8px;background:#ffffff;box-shadow:0 2px 4px rgba(0,0,0,0.03)\">\n<h3 style=\"margin-top:0;color:#C14420\"><a href=\"https:\/\/boochlin.com\/?p=1297\" style=\"text-decoration:none;color:#C14420\">\u7b2c\u4e94\u90e8\u66f2\uff1a\u55ae\u5411\u6551\u8d16 \u2013 Funny vote APP \u2013 \u70ba\u4e86\u89e3\u6c7a\u72c0\u614b\u6253\u67b6\uff1a\u76f4\u4e0a MVI \u55ae\u5411\u6d41\u8207\u62ef\u6551\u767d\u5c4f\u707d\u96e3\uff08\u4e94\uff09<\/a><\/h3>\n<p style=\"color:#666;font-size:0.95em;margin-bottom:8px\"><strong>\u5c0d\u61c9\u5206\u652f<\/strong>\uff1a<code>mvi-rewrite<\/code> (2024) \uff5c <strong>\u6838\u5fc3\u6280\u8853<\/strong>\uff1aMVI (UDF) \/ HomeUiState \/ HomeIntent \/ Channel.BUFFERED \u526f\u4f5c\u7528<\/p>\n<p style=\"margin:0;line-height:1.6\">\u5256\u6790\u50b3\u7d71 MVVM \u591a\u500b StateFlow \u5728\u975e\u540c\u6b65\u4e26\u767c\u4e0b\u7684\u300c\u72c0\u614b\u6495\u88c2\u300d\u707d\u96e3\uff1b\u6279\u99c1\u516c\u7248 Sealed Class \u5728\u4e0b\u62c9\u5237\u65b0\u6642\u6574\u5c4f\u767d\u5c4f\u9583\u720d\u7684\u300c\u73a9\u5177\u67b6\u69cb\u9677\u9631\u300d\uff1b\u5f15\u5165\u55ae\u4e00\u4e0d\u53ef\u8b8a\u72c0\u614b\u7684\u589e\u91cf copy \u54f2\u5b78\u8207 Channel \u55ae\u6b21\u526f\u4f5c\u7528\u901a\u9053\uff0c\u5fb9\u5e95\u7a69\u56fa\u67b6\u69cb\u3002<\/p>\n<\/div>\n<div class=\"wp-block-group\" style=\"border:1px solid #e0e0e0;padding:20px;border-radius:8px;background:#ffffff;box-shadow:0 2px 4px rgba(0,0,0,0.03)\">\n<h3 style=\"margin-top:0;color:#C14420\"><a href=\"https:\/\/boochlin.com\/?p=1299\" style=\"text-decoration:none;color:#C14420\">\u7b2c\u516d\u90e8\u66f2\uff1a\u60c5\u611f\u6f54\u7656 \u2013 Funny vote APP \u2013 \u5f37\u8feb\u75c7\u7684 100% \u756b\u9762\u5fa9\u523b\uff1a\u628a\u5341\u5e74\u524d\u7684\u9752\u6625\u642c\u9032 Material 3\uff08\u516d\uff09<\/a><\/h3>\n<p style=\"color:#666;font-size:0.95em;margin-bottom:8px\"><strong>\u5c0d\u61c9\u5206\u652f<\/strong>\uff1a<code>modern-android<\/code> (2026) \uff5c <strong>\u6838\u5fc3\u6280\u8853<\/strong>\uff1aMaterial 3 Dynamic Color \/ \u5411\u91cf SVG \/ HorizontalPager \u5c0e\u89bd \/ \u81ea\u8a02\u5206\u4eab\u5f48\u7a97<\/p>\n<p style=\"margin:0;line-height:1.6\">\u62d2\u7d55\u53ea\u505a\u5169\u4e09\u500b\u9801\u9762\u7684\u958b\u6e90\u300c\u6a23\u54c1\u5c4b\u91cd\u69cb\u300d\uff01\u8010\u8457\u6027\u5b50\u628a 48&#215;48 \u6a21\u7cca\u9ede\u9663\u5716\u5347\u7d1a SVG\u3001\u5beb\u6b7b\u984f\u8272\u9077\u5165 M3 \u6df1\u6dfa\u52d5\u614b\u53d6\u8272\u3001100% \u5fa9\u523b 6 \u9801\u5c0e\u89bd\u8207 4 \u500b\u81f4\u656c\u7576\u5e74\u8001\u5925\u4f34\u7684\u95dc\u65bc\u9801\u9762\u3002\u6700\u5f8c\u649e\u4e0a\u300c\u756b\u9762 120fps \u4f46\u5341\u5e74\u524d VPS \u65e9\u5c31\u5012\u9589\u300d\u7684\u8352\u8b2c\u73fe\u5834\u3002<\/p>\n<\/div>\n<div class=\"wp-block-group\" style=\"border:1px solid #e0e0e0;padding:20px;border-radius:8px;background:#ffffff;box-shadow:0 2px 4px rgba(0,0,0,0.03)\">\n<h3 style=\"margin-top:0;color:#C14420\"><a href=\"https:\/\/boochlin.com\/?p=1313\" style=\"text-decoration:none;color:#C14420\">\u7b2c\u4e03\u90e8\u66f2\uff1a\u96f2\u7aef\u63db\u5fc3 \u2013 Funny vote APP \u2013 \u4e94\u7f8e\u5143\u4f3a\u670d\u5668\u9663\u4ea1\u5f8c\uff1a\u7528 Firebase \u8207\u8001\u5206\u652f\u7e8c\u547d\u7684\u96f2\u7aef\u63db\u5fc3\u96dc\u8a18\uff08\u4e03\uff09<\/a><\/h3>\n<p style=\"color:#666;font-size:0.95em;margin-bottom:8px\"><strong>\u5c0d\u61c9\u5206\u652f<\/strong>\uff1a<code>feature\/firebase-backend<\/code> (2026) \uff5c <strong>\u6838\u5fc3\u6280\u8853<\/strong>\uff1aCloud Firestore \/ Serverless \/ NgramUtil Bi-gram \u6a21\u7cca\u641c\u5c0b \/ \u6b77\u53f2\u5206\u652f\u5fa9\u6d3b<\/p>\n<p style=\"margin:0;line-height:1.6\">\u96f6\u7dad\u904b Serverless \u9769\u547d\uff01\u624b\u523b Bi-gram \u96d9\u5b57\u5143\u5207\u8a5e\u6f14\u7b97\u6cd5\u96f6\u6210\u672c\u62ef\u6551 Firestore \u6b98\u5ee2\u4e2d\u6587\u641c\u5c0b\uff1b\u780d\u6389 Room+Firestore \u96d9\u5feb\u53d6\u904e\u5ea6\u8a2d\u8a08\uff1b\u7d42\u6975\u5f69\u86cb\uff1a\u6253\u9020\u56db\u500b\u6b77\u53f2\u5206\u652f\uff08mvp_firebase \u7b49\uff09\uff0c\u8b93\u5341\u5e74\u524d\u7684\u8001\u67b6\u69cb\u63db\u4e0a\u96f2\u7aef\u5fc3\u81df\u7121\u7e2b\u5171\u821e\u3002<\/p>\n<\/div>\n<div class=\"wp-block-group\" style=\"border:1px solid #C14420;padding:20px;border-radius:8px;background:#fff8f6;box-shadow:0 2px 6px rgba(193,68,32,0.08)\">\n<h3 style=\"margin-top:0;color:#C14420\"><a href=\"https:\/\/boochlin.com\/?p=1315\" style=\"text-decoration:none;color:#C14420\">\u7b2c\u516b\u90e8\u66f2\uff1a\u7d42\u5c40\u4e4b\u6230 \u2013 Funny vote APP \u2013 \u7576 Codex \u63a5\u7ba1\u5de5\u4f4d\uff1a\u5f9e\u96f6\u69cb\u5efa\u3001SDD \u5e7b\u8c61\u5230 Agent-Centric \u7684\u8cc7\u5b89\u7d42\u5c40\u5be6\u9304\uff08\u516b\u00b7\u7d42\u5c40\u7bc7\uff09<\/a><\/h3>\n<p style=\"color:#666;font-size:0.95em;margin-bottom:8px\"><strong>\u5c0d\u61c9\u5206\u652f<\/strong>\uff1a<code>feature\/firebase-backend<\/code> \u7d42\u5c40\u5b8c\u7d50 \uff5c <strong>\u6838\u5fc3\u6280\u8853<\/strong>\uff1aVibe Coding \u8b77\u6b04 \/ SDD \u7ffb\u6848 \/ OWASP MASVS 100\/100 \u6eff\u5206\u52a0\u56fa \/ \u96f6\u4fe1\u4efb\u52a0\u9e7d\u96dc\u6e4a<\/p>\n<p style=\"margin:0;line-height:1.6\">\u7531 Codex \u51b7\u9762\u5be9\u67e5\u54e1\u4e3b\u7b46\uff01\u6233\u7834\u76f2\u6253 Prompt \u7522\u751f\u6578\u4f4d\u5783\u573e\u7684\u8ff7\u601d\uff1b\u6253\u7834 50 \u9801 SPEC \u5e7b\u8c61\uff0c\u63d0\u51fa\u300c\u6700\u5c0f\u53ef\u57f7\u884c\u5951\u7d04 + \u6e2c\u8a66\u8b77\u6b04\u300d\uff1b\u56db\u5927\u786c\u6838\u5be6\u6230\u5287\u5834\uff08\u76e3\u807d\u5668\u6d41\u6d29\u3001IDOR \u8d8a\u6b0a\u522a\u5eab\u3001\u6539\u7968\u8ca0\u6578\u3001\u5e7d\u9748\u4f9d\u8cf4 CVE\uff09\uff1b\u5168\u7dad\u5ea6\u8cc7\u5b89\u62c6\u5f48\u76f4\u53d6 MASVS 100\/100 A+ \u6eff\u5206\u3002\u5341\u5e74\u524d\u6b20\u81ea\u5df1\u7684\u9752\u6625\u50b5\uff0c\u4eca\u5929\u5fb9\u5e95\u9084\u6e05\uff01<\/p>\n<\/div>\n<\/div>\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n<h2 class=\"wp-block-heading\">\u5c08\u6848 GitHub \u5009\u5eab\u8207\u8001\u5206\u652f\u5730\u5716<\/h2>\n<p>\u672c\u7cfb\u5217\u6240\u6709\u4ee3\u78bc\u8207\u6b77\u53f2\u6f14\u9032\u5206\u652f\uff0c\u5747\u771f\u5be6\u8a17\u7ba1\u65bc GitHub\uff1a<br \/>\n<a href=\"https:\/\/github.com\/boochlin06\/FunnyVote\" target=\"_blank\" rel=\"noreferrer noopener\" style=\"font-weight:bold;color:#C14420\">https:\/\/github.com\/boochlin06\/FunnyVote<\/a><\/p>\n<ul>\n<li><code>master<\/code>\uff1a2016 \u59cb\u7956 Java \u7248\u672c<\/li>\n<li><code>mvp<\/code>\uff1a2017 MVP \u91cd\u69cb\u7248<\/li>\n<li><code>mvp_rxjava<\/code>\uff1a2017 RxJava \u4e32\u6d41\u7248<\/li>\n<li><code>mvp_kotlin<\/code>\uff1a2018 Kotlin \u8a9e\u8a00\u5148\u884c\u7248<\/li>\n<li><code>kotlin-rewrite<\/code>\uff1a2024 Jetpack Compose \u521d\u63a2\u7248<\/li>\n<li><code>mvi-rewrite<\/code>\uff1a2024 MVI \u55ae\u5411\u8cc7\u6599\u6d41\u7248<\/li>\n<li><code>modern-android<\/code>\uff1a2026 100% \u756b\u9762\u5fa9\u523b\u65d7\u8266\u7248<\/li>\n<li><code>feature\/firebase-backend<\/code>\uff1a2026 \u96f2\u539f\u751f Firebase \u7d42\u5c40\u5b8c\u7d50\u7248<\/li>\n<\/ul>\n<p>\u611f\u8b1d\u5404\u4f4d\u5341\u5e74\u9593\u7684\u966a\u4f34\u8207\u95b1\u8b80\uff0c\u6536\u5de5\uff01<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u6a6b\u8de8\u5341\u5e74\u7684\u771f\u5be6\u958b\u6e90\u5c08\u6848\u6f14\u9032\u5168\u7d00\u9304\uff082016 \u2013 2026\uff09 \u9019\u4e0d\u662f\u6559\u79d1\u66f8\u4e0a\u7684\u73a9\u5177 Demo\uff0c\u800c\u662f\u4e00\u500b\u771f\u5be6\u7d93\u6b77\u5341 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"_links":{"self":[{"href":"https:\/\/boochlin.com\/index.php?rest_route=\/wp\/v2\/pages\/1319"}],"collection":[{"href":"https:\/\/boochlin.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/boochlin.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/boochlin.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/boochlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1319"}],"version-history":[{"count":2,"href":"https:\/\/boochlin.com\/index.php?rest_route=\/wp\/v2\/pages\/1319\/revisions"}],"predecessor-version":[{"id":1472,"href":"https:\/\/boochlin.com\/index.php?rest_route=\/wp\/v2\/pages\/1319\/revisions\/1472"}],"wp:attachment":[{"href":"https:\/\/boochlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1319"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}