{"id":1216,"date":"2026-10-09T01:59:00","date_gmt":"2026-10-09T01:59:00","guid":{"rendered":"https:\/\/hyc.eshachem.com\/program\/?p=1216"},"modified":"2026-10-09T01:59:01","modified_gmt":"2026-10-09T01:59:01","slug":"115-birc-%e5%89%8d%e7%ab%af%e5%b7%a5%e7%a8%8b%e5%b8%ab%e8%80%83%e8%a9%a6","status":"publish","type":"post","link":"https:\/\/hyc.eshachem.com\/program\/115-birc-%e5%89%8d%e7%ab%af%e5%b7%a5%e7%a8%8b%e5%b8%ab%e8%80%83%e8%a9%a6\/","title":{"rendered":"115 BIRC \u524d\u7aef\u5de5\u7a0b\u5e2b\u8003\u8a66"},"content":{"rendered":"\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u9019\u88e1\u4e3b\u8981\u6703\u8b1b\u4e9b\u6280\u8853\u5c64\u9762\u7684\u6771\u897f\uff0c\u5982\u679c\u60f3\u4e86\u89e3\u8003\u6838\u984c\u76ee\u7684\u8a2d\u8a08&amp;\u601d\u8003\u904e\u7a0b(\u66f4\u662f\u6211\u5728 AI \u6642\u4ee3\u4e0b\u91cd\u65b0\u5b9a\u7fa9\u5de5\u7a0b\u5e2b\u50f9\u503c\u7684\u5fc3\u8def\u6b77\u7a0b)\u53ef\u4ee5\u9ede\u64ca\u4e0b\u65b9:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/hyc.eshachem.com\/115-birc-%e5%89%8d%e7%ab%af%e5%b7%a5%e7%a8%8b%e5%b8%ab%e8%80%83%e8%a9%a6-%e5%87%ba%e9%a1%8c%e6%83%b3%e6%b3%95\/\" target=\"_blank\" rel=\"noopener\" title=\"\u9ede\u6211\u524d\u5f80:\u5982\u4f55\u8a2d\u8a08\u4e00\u5834\u4e0d\u88ab AI \u7834\u89e3\u7684\u8003\u6838\uff1f\u6211\u7684\u984c\u76ee\u8a2d\u8a08\u601d\u8003\u904e\u7a0b\">\u9ede\u6211\u524d\u5f80:\u5982\u4f55\u8a2d\u8a08\u4e00\u5834\u4e0d\u88ab AI \u7834\u89e3\u7684\u8003\u6838\uff1f\u6211\u7684\u984c\u76ee\u8a2d\u8a08\u601d\u8003\u904e\u7a0b<\/a><\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\">\n\n\n\n<h1 class=\"wp-block-heading\" id=\"%e5%be%8c%e7%ab%af%e6%9e%b6%e6%a7%8b\">\u5f8c\u7aef\u67b6\u69cb<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/github.com\/Chen11111112\/exam-1\" target=\"_blank\" rel=\"noopener\" title=\"\u9ede\u6211\u524d\u5f80\u5f8c\u7aef\u7684GitHub\">\u9ede\u6211\u524d\u5f80\u5f8c\u7aef\u7684GitHub<\/a><\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"%e7%82%ba%e4%bb%80%e9%ba%bc%e6%88%91%e6%a3%84%e7%94%a8-spring-boot-%e6%94%b9%e9%81%b8-next-js-api-routes%ef%bc%9f\">\u70ba\u4ec0\u9ebc\u6211\u68c4\u7528 Spring Boot \u6539\u9078 Next.js API Routes\uff1f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u65e2\u7136\u8981\u8003\u524d\u7aef\u7684 API \u4e32\u63a5\u8207\u72c0\u614b\u8655\u7406\uff0c\u6211\u7576\u7136\u5fc5\u9808\u63d0\u4f9b\u4e00\u5957\u7a69\u5b9a\u7684\u5f8c\u7aef\u670d\u52d9\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6211\u4e4b\u524d\u7528 <strong>Spring Boot<\/strong> \u4f86\u5beb\u7d66\u5b78\u5f1f\u59b9\u4e32\u63a5\u7684\u5f8c\u7aef\uff0c\u4f46\u8aaa\u771f\u7684\uff0cSpring Boot \u96d6\u7136\u56b4\u8b39\uff0c\u4f46\u5c0d\u65bc\u8f15\u91cf\u5c08\u6848\u6216\u521d\u5b78\u8005\u4f86\u8aaa\u771f\u7684<strong>\u592a\u904e\u7e41\u91cd<\/strong>\u3002\u53ea\u662f\u8981\u5beb\u4e00\u500b\u7c21\u55ae\u7684 <code>GET<\/code> \u67e5\u8a62\uff0c\u5c31\u8981\u958b\u597d\u5e7e\u500b\u6a94\u6848\u3001\u5206 <code>Controller<\/code> \/ <code>Service<\/code> \/ <code>Repository<\/code> \/ <code>DTO<\/code> \/ <code>Entity<\/code> \u7b49\u7121\u6578\u968e\u5c64\u3002\u9019\u7a2e\u591a\u6a21\u7d44\u8207Over-engineering\uff0c\u5728\u76ee\u524d\u9019\u500b\u898f\u6a21\u4e0b\u986f\u5f97\u6709\u4e9b\u591a\u6b64\u4e00\u8209\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u70ba\u4e86\u8b93\u958b\u767c\u66f4\u654f\u6377\u3001\u67b6\u69cb\u66f4\u89aa\u6c11\uff0c\u9019\u6b21\u6211\u6539\u7528 <strong>Next.js API Routes<\/strong> \u4f86\u5efa\u7acb\u5f8c\u7aef API\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"next-js-api-routes\"> Next.js API Routes<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u96d6\u7136 Next.js \u6c92\u6709\u5f37\u5236\u898f\u5b9a\u76ee\u9304\u898f\u7bc4\uff0c\u4e0d\u904e\u6211\u7d50\u5408\u4e86\u904e\u53bb\u7684\u524d\u5f8c\u7aef\u5be6\u52d9\u7d93\u9a57\uff0c\u7cbe\u7149\u51fa\u4e00\u5957\u300c\u95dc\u6ce8\u9ede\u5206\u96e2 Separation of Concerns, SoC\uff0c\u537b\u53c8\u4e0d\u904e\u5ea6\u8907\u96dc\u300d\u7684\u8f15\u91cf\u67b6\u69cb\uff1a<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">\u251c\u2500\u2500 app\/\n\u2502   \u2514\u2500\u2500 api\/                  <span class=\"hljs-comment\"># \u3010Controller \u5c64\u3011API Routes (\u8def\u7531\u8207\u524d\u7aef\u5c0d\u63a5)<\/span>\n\u251c\u2500\u2500 services\/                 <span class=\"hljs-comment\"># \u3010Service \/ DB \u64cd\u4f5c\u5c64\u3011\u8ca0\u8cac SQL \u53c3\u6578\u5316\u67e5\u8a62\u8207\u696d\u52d9\u908f\u8f2f<\/span>\n\u251c\u2500\u2500 lib\/                      <span class=\"hljs-comment\"># \u3010Infrastructure \/ \u5de5\u5177\u5c64\u3011\u6838\u5fc3\u57fa\u790e\u8a2d\u65bd<\/span>\n\u2502   \u251c\u2500\u2500 mysql.ts              <span class=\"hljs-comment\"># \u8cc7\u6599\u5eab\u9023\u7dda\uff08\u89e3\u6790\u9023\u7dda URL \/ Pool\uff09<\/span>\n\u2502   \u251c\u2500\u2500 schemas.ts            <span class=\"hljs-comment\"># \u8f38\u5165\u9a57\u8b49\uff08\u4f7f\u7528 Zod \/ \u9632\u79a6\u6027\u6b04\u4f4d\u6aa2\u67e5\uff09<\/span>\n\u2502   \u251c\u2500\u2500 env.ts                <span class=\"hljs-comment\"># \u74b0\u5883\u8b8a\u6578\u6aa2\u6e2c\uff08\u74b0\u5883\u8b8a\u6578\u9632\u79a6\u6a5f\u5236\uff09<\/span>\n\u2502   \u2514\u2500\u2500 types.d.ts            <span class=\"hljs-comment\"># TypeScript \u4ecb\u9762\u8207\u578b\u614b\u5b9a\u7fa9 (Interface)<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h4 class=\"wp-block-heading\" id=\"%e5%90%84%e5%b1%a4%e7%b4%9a%e8%81%b7%e8%b2%ac%e8%aa%aa%e6%98%8e%ef%bc%9a\">\u5404\u5c64\u7d1a\u8077\u8cac\u8aaa\u660e\uff1a<\/h4>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong><code>app\/api\/<\/code>\uff08Controller \u5c64\uff09<\/strong>\uff1a\n<ul class=\"wp-block-list\">\n<li>\u8ca0\u8cac API \u8def\u5f91\u5c0d\u61c9\u8207 HTTP Request \/ Response \u8655\u7406\u3002<\/li>\n\n\n\n<li>\u8207\u524d\u7aef\u76f4\u63a5\u5c0d\u63a5\uff0c\u63a5\u6536\u53c3\u6578\u5f8c\u547c\u53eb\u670d\u52d9\u5c64\uff0c\u518d\u5c07\u7d50\u679c\u56de\u50b3\u3002<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong><code>services\/<\/code>\uff08Service \/ DAO \u5c64\uff09<\/strong>\uff1a\n<ul class=\"wp-block-list\">\n<li>\u5c08\u9580\u8ca0\u8cac\u4e3b\u8981\u696d\u52d9\u908f\u8f2f\u8207\u8cc7\u6599\u5eab\u4e92\u52d5\u3002<\/li>\n\n\n\n<li>\u4f7f\u7528\u53c3\u6578\u5316\u67e5\u8a62\uff08Parameterized Queries\uff09\u64b0\u5beb SQL \u8a9e\u53e5\uff0c\u907f\u514d SQL Injection\uff0c\u78ba\u4fdd\u5b89\u5168\u3002<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong><code>lib\/<\/code>\uff08Library \u57fa\u790e\u8a2d\u65bd\u5c64\uff09<\/strong>\uff1a\n<ul class=\"wp-block-list\">\n<li><strong><code>mysql.ts<\/code><\/strong>\uff1a\u5c01\u88dd\u9023\u7dda\u6c60\uff08Connection Pool\uff09\u8207 URL \u89e3\u6790\u908f\u8f2f\u3002<\/li>\n\n\n\n<li><strong><code>schemas.ts<\/code><\/strong>\uff1a\u4f7f\u7528 <strong>Zod<\/strong>\uff08\u6216\u985e\u4f3c\u5957\u4ef6\uff09\u505a\u8f38\u5165\u8cc7\u6599\u7684\u9632\u79a6\u6027\u9a57\u8b49\uff08\u5982\uff1a\u6aa2\u67e5\u6578\u5b57\u662f\u5426\u975e\u96f6\u3001\u975e\u7a7a\u3001\u975e\u8ca0\u6578\uff09\u3002<\/li>\n\n\n\n<li><strong><code>env.ts<\/code><\/strong>\uff1a\u9632\u79a6\u6027\u6a5f\u5236\uff0c\u5c08\u6848\u555f\u52d5\u6642\u81ea\u52d5\u6aa2\u67e5\u662f\u5426\u7f3a\u5c11\u5fc5\u8981\u7684 <code>.env<\/code> \u8a2d\u5b9a\u6a94\uff0c\u907f\u514d\u904b\u884c\u6642\u610f\u5916 Crash\u3002<\/li>\n\n\n\n<li><strong><code>types.d.ts<\/code><\/strong>\uff1a\u5b9a\u7fa9\u524d\u7aef\u4e32\u63a5\u6240\u9700\u7684 Request\/Response TypeScript <code>interface<\/code>\uff0c\u63d0\u5347\u578b\u5225\u5b89\u5168\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"%e7%92%b0%e5%a2%83%e9%9a%94%e9%9b%a2%e8%88%87-docker-%e5%8c%96%e9%83%a8%e7%bd%b2\">\u74b0\u5883\u9694\u96e2\u8207 Docker \u5316\u90e8\u7f72<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u7576\u5f8c\u7aef\u670d\u52d9\u8207\u8cc7\u6599\u5eab\u5beb\u597d\u5f8c\uff0c\u6211\u7acb\u523b\u610f\u8b58\u5230\u4e00\u500b\u56b4\u91cd\u7684\u5be6\u52d9\u554f\u984c\uff1a<strong>\u5982\u679c\u8b93\u6240\u6709\u8003\u751f\u5728\u540c\u4e00\u6642\u9593\u4e32\u63a5\u300c\u540c\u4e00\u500b\u9060\u7aef\u5f8c\u7aef\u300d\uff0c\u4e00\u5b9a\u6703\u5f15\u7206\u707d\u96e3\u3002<\/strong><\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>Data Race<\/strong>\uff1a\u8003\u751f A \u5728\u4fee\u6539\/\u522a\u9664\u9019\u7b46\u8cc7\u6599\uff0c\u8003\u751f B \u6b63\u597d\u5728\u67e5\u8a62\u540c\u4e00\u7b46\u8cc7\u6599\uff0c\u5c0e\u81f4\u9664\u932f\u6642\u7522\u751f\u6975\u5927\u5e72\u64fe\u3002<\/li>\n\n\n\n<li><strong>\u9023\u7dda\u8207\u670d\u52d9\u5d29\u6f70<\/strong>\uff1a\u6240\u6709\u4eba\u540c\u6642\u4f75\u767c\u6253\u8acb\u6c42\uff0c\u751a\u81f3\u6709\u8003\u751f\u5beb\u51fa Infinite Loop \u628a\u5f8c\u7aef\u6253\u57ae\uff0c\u5168\u5834\u5176\u4ed6\u4eba\u7684\u8003\u8a66\u90fd\u6703\u88ab\u4e00\u8d77\u62d6\u4e0b\u6c34\u3002<\/li>\n\n\n\n<li><strong>\u7121\u6548\u6e9d\u901a\u8207\u9664\u932f<\/strong>\uff1a\u6839\u672c\u7121\u6cd5\u91d0\u6e05\u5230\u5e95\u662f\u6211\uff08\u8003\u751f\u672c\u4eba\uff09\u7684\u524d\u7aef Code \u5beb\u932f\uff0c\u9084\u662f\u5225\u4eba\u52d5\u5230\u4e86\u5f8c\u7aef\u8cc7\u6599\u3002<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">\u70ba\u4e86\u78ba\u4fdd\u300c\u6bcf\u4f4d\u8003\u751f\u90fd\u6709\u5b8c\u5168\u7368\u7acb\u3001\u4e92\u4e0d\u5e72\u64fe\u7684\u6e2c\u8a66\u5f8c\u7aef\u8207\u8cc7\u6599\u5eab\u300d\uff0c\u6211\u63a1\u7528\u4e86 Docker \u4f86\u5be6\u73fe\u74b0\u5883\u9694\u96e2\uff1a<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"%e6%88%91%e7%9a%84%e9%96%8b%e7%99%bc%e6%89%93%e5%8c%85%e7%ab%af%e7%92%b0%e5%a2%83\">\u6211\u7684\u958b\u767c&amp;\u6253\u5305\u7aef\u74b0\u5883<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u5c07 Next.js \u5f8c\u7aef\u6253\u5305\u6210 300MB \u5de6\u53f3\u7684 Image \u5f8c\uff0c\u639b\u8f09\u81f3 GitHub Releases \u4f9b\u4e0b\u8f09\u8207\u62c9\u53d6\u3002<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">.\n\u251c\u2500\u2500 sql\/\n\u2502   \u2514\u2500\u2500 init.sql             <span class=\"hljs-comment\"># \u81ea\u52d5\u532f\u5165 DB Schema \u8207\u521d\u59cb\u6e2c\u8a66\u8cc7\u6599<\/span>\n\u251c\u2500\u2500 Dockerfile               <span class=\"hljs-comment\"># \u5c07 Next.js API \u5f8c\u7aef\u6253\u5305\u6210\u7d04 300MB \u7684 Image \u4e26\u63a8\u4e0a Docker Hub<\/span>\n\u2514\u2500\u2500 docker-compose.yml       <span class=\"hljs-comment\"># \u672c\u5730\u958b\u767c\u8207\u6e2c\u8a66\u74b0\u5883\u8173\u672c<\/span>\n    <\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h4 class=\"wp-block-heading\" id=\"%e7%b5%a6%e8%80%83%e7%94%9f%e7%9a%84-exam-kit-%e8%80%83%e8%a9%a6%e5%8c%85%ef%bc%9a\">\u7d66\u8003\u751f\u7684 <code>Exam-Kit<\/code> \u8003\u8a66\u5305\uff1a<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b8c\u5168\u4e0d\u5305\u542b\u5f8c\u7aef\u539f\u59cb\u78bc\uff0c\u4e7e\u6de8\u53c8\u65b9\u4fbf\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8003\u751f\u53ea\u9700\u8981\u524d\u5f80 GitHub\uff1a<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>\u4e0b\u8f09 Releases<\/strong>\uff1a\u53d6\u5f97\u5df2\u6253\u5305\u597d\u7684\u767c\u5e03\u6a94\u8207\u74b0\u5883\u6a94\u3002<\/li>\n\n\n\n<li><strong>Clone Exam-Kit<\/strong>\uff1a\u53d6\u5f97\u5c08\u6848\u8a2d\u5b9a\u3002<\/li>\n\n\n\n<li><strong>\u4e00\u9375\u555f\u52d5<\/strong>\uff1a\u7167\u8457 <code>README.md<\/code> \u8f38\u5165\u6307\u4ee4\uff0c\u5c31\u80fd\u5728\u81ea\u5df1\u96fb\u8166\u7684 Docker \u4e0a<strong>\u4e00\u79d2\u555f\u52d5\u5c08\u5c6c\u7684\u5f8c\u7aef API \u8207\u8cc7\u6599\u5eab<\/strong>\u3002<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">\u5373\u4fbf\u4e0d\u5c0f\u5fc3\u628a\u8cc7\u6599\u5eab\u641e\u721b\uff0c\u91cd\u8dd1\u4e00\u6b21\u6307\u4ee4 3 \u79d2\u9418\u5373\u53ef\u5fa9\u539f\uff0c\u8b93\u5b78\u751f\u80fd\u7121\u5f8c\u9867\u4e4b\u6182\u5730\u5c08\u6ce8\u5728\u524d\u7aef UI\/UX \u7684\u958b\u767c\u8207\u4e32\u63a5\u4e0a\uff01<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">Exam-Kit\/\n\u251c\u2500\u2500 docker-compose.yml       <span class=\"hljs-comment\"># \u81ea\u52d5\u62c9\u53d6 Docker Hub \u4e0a\u7684\u5f8c\u7aef Image + \u555f\u52d5 MySQL<\/span>\n\u2514\u2500\u2500 README.md                <span class=\"hljs-comment\"># \u61f6\u4eba\u6307\u4ee4\u6307\u5357<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>","protected":false},"excerpt":{"rendered":"<p>\u9019\u88e1\u4e3b\u8981\u6703\u8b1b\u4e9b\u6280\u8853\u5c64\u9762\u7684\u6771\u897f\uff0c\u5982\u679c\u60f3\u4e86\u89e3\u8003\u6838\u984c\u76ee\u7684\u8a2d\u8a08&amp;\u601d\u8003\u904e\u7a0b(\u66f4\u662f\u6211\u5728 AI \u6642\u4ee3\u4e0b\u91cd\u65b0\u5b9a\u7fa9\u5de5\u7a0b\u5e2b\u50f9\u503c\u7684\u5fc3\u8def\u6b77\u7a0b)\u53ef\u4ee5\u9ede\u64ca\u4e0b\u65b9: \u9ede\u6211\u524d\u5f80:\u5982\u4f55\u8a2d\u8a08\u4e00\u5834\u4e0d\u88ab AI \u7834\u89e3\u7684\u8003\u6838\uff1f\u6211\u7684\u984c\u76ee\u8a2d\u8a08\u601d\u8003\u904e\u7a0b \u5f8c\u7aef\u67b6\u69cb \u9ede\u6211\u524d\u5f80\u5f8c\u7aef\u7684GitHub \u70ba\u4ec0\u9ebc\u6211\u68c4\u7528 Spring Boot \u6539\u9078 Next.js API Routes\uff1f \u65e2\u7136\u8981\u8003\u524d\u7aef\u7684 API \u4e32\u63a5\u8207\u72c0\u614b\u8655\u7406\uff0c\u6211\u7576\u7136\u5fc5\u9808\u63d0\u4f9b\u4e00\u5957\u7a69\u5b9a\u7684\u5f8c\u7aef\u670d\u52d9\u3002 \u6211\u4e4b\u524d\u7528 Spring Boot \u4f86\u5beb\u7d66\u5b78\u5f1f\u59b9\u4e32\u63a5\u7684\u5f8c\u7aef\uff0c\u4f46\u8aaa\u771f\u7684\uff0cSpring Boot \u96d6\u7136\u56b4\u8b39\uff0c\u4f46\u5c0d\u65bc\u8f15\u91cf\u5c08\u6848\u6216\u521d\u5b78\u8005\u4f86\u8aaa\u771f\u7684\u592a\u904e\u7e41\u91cd\u3002\u53ea\u662f\u8981\u5beb\u4e00\u500b\u7c21\u55ae\u7684 GET \u67e5\u8a62\uff0c\u5c31\u8981\u958b\u597d\u5e7e\u500b\u6a94\u6848\u3001\u5206 Controller \/ Service \/ Repository \/ DTO \/ Entity \u7b49\u7121\u6578\u968e\u5c64\u3002\u9019\u7a2e\u591a\u6a21\u7d44\u8207Over-engineering\uff0c\u5728\u76ee\u524d\u9019\u500b\u898f\u6a21\u4e0b\u986f\u5f97\u6709\u4e9b\u591a\u6b64\u4e00\u8209\u3002 \u70ba\u4e86\u8b93\u958b\u767c\u66f4\u654f\u6377\u3001\u67b6\u69cb\u66f4\u89aa\u6c11\uff0c\u9019\u6b21\u6211\u6539\u7528 Next.js API Routes \u4f86\u5efa\u7acb\u5f8c\u7aef API\u3002 Next.js API Routes \u96d6\u7136 Next.js \u6c92\u6709\u5f37\u5236\u898f\u5b9a\u76ee\u9304\u898f\u7bc4\uff0c\u4e0d\u904e\u6211\u7d50\u5408\u4e86\u904e\u53bb\u7684\u524d\u5f8c\u7aef\u5be6\u52d9\u7d93\u9a57\uff0c\u7cbe\u7149\u51fa\u4e00\u5957\u300c\u95dc\u6ce8\u9ede\u5206\u96e2 Separation of Concerns, SoC\uff0c\u537b\u53c8\u4e0d\u904e\u5ea6\u8907\u96dc\u300d\u7684\u8f15\u91cf\u67b6\u69cb\uff1a \u5404\u5c64\u7d1a\u8077\u8cac\u8aaa\u660e\uff1a \u74b0\u5883\u9694\u96e2\u8207 Docker [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1216","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u9019\u88e1\u4e3b\u8981\u6703\u8b1b\u4e9b\u6280\u8853\u5c64\u9762\u7684\u6771\u897f\uff0c\u5982\u679c\u60f3\u4e86\u89e3\u8003\u6838\u984c\u76ee\u7684\u8a2d\u8a08&amp;\u601d\u8003\u904e\u7a0b(\u66f4\u662f\u6211\u5728 AI \u6642\u4ee3\u4e0b\u91cd\u65b0\u5b9a\u7fa9\u5de5\u7a0b\u5e2b\u50f9\u503c\u7684\u5fc3\u8def\u6b77\u7a0b)\u53ef\u4ee5\u9ede\u64ca\u4e0b\u65b9: \u9ede\u6211\u524d\u5f80:\u5982\u4f55\u8a2d\u8a08\u4e00\u5834\u4e0d\u88ab AI \u7834\u89e3\u7684\u8003\u6838\uff1f\u6211\u7684\u984c\u76ee\u8a2d\u8a08\u601d\u8003\u904e\u7a0b \u5f8c\u7aef\u67b6\u69cb \u9ede\u6211\u524d\u5f80\u5f8c\u7aef\u7684GitHub \u70ba\u4ec0\u9ebc\u6211\u68c4\u7528 Spring Boot \u6539\u9078 Next.js API Routes\uff1f \u65e2\u7136\u8981\u8003\u524d\u7aef\u7684 API \u4e32\u63a5\u8207\u72c0\u614b\u8655\u7406\uff0c\u6211\u7576\u7136\u5fc5\u9808\u63d0\u4f9b\u4e00\u5957\u7a69\u5b9a\u7684\u5f8c\u7aef\u670d\u52d9\u3002 \u6211\u4e4b\u524d\u7528 Spring Boot \u4f86\u5beb\u7d66\u5b78\u5f1f\u59b9\u4e32\u63a5\u7684\u5f8c\u7aef\uff0c\u4f46\u8aaa\u771f\u7684\uff0cSpring Boot \u96d6\u7136\u56b4\u8b39\uff0c\u4f46\u5c0d\u65bc\u8f15\u91cf\u5c08\u6848\u6216\u521d\u5b78\u8005\u4f86\u8aaa\u771f\u7684\u592a\u904e\u7e41\u91cd\u3002\u53ea\u662f\u8981\u5beb\u4e00\u500b\u7c21\u55ae\u7684 GET \u67e5\u8a62\uff0c\u5c31\u8981\u958b\u597d\u5e7e\u500b\u6a94\u6848\u3001\u5206 Controller \/ Service \/ Repository \/ DTO \/ Entity \u7b49\u7121\u6578\u968e\u5c64\u3002\u9019\u7a2e\u591a\u6a21\u7d44\u8207Over-engineering\uff0c\u5728\u76ee\u524d\u9019\u500b\u898f\u6a21\u4e0b\u986f\u5f97\u6709\u4e9b\u591a\u6b64\u4e00\u8209\u3002 \u70ba\u4e86\u8b93\u958b\u767c\u66f4\u654f\u6377\u3001\u67b6\u69cb\u66f4\u89aa\u6c11\uff0c\u9019\u6b21\u6211\u6539\u7528 Next.js API Routes \u4f86\u5efa\u7acb\u5f8c\u7aef API\u3002 Next.js API Routes \u96d6\u7136 Next.js \u6c92\u6709\u5f37\u5236\u898f\u5b9a\u76ee\u9304\u898f\u7bc4\uff0c\u4e0d\u904e\u6211\u7d50\u5408\u4e86\u904e\u53bb\u7684\u524d\u5f8c\u7aef\u5be6\u52d9\u7d93\u9a57\uff0c\u7cbe\u7149\u51fa\u4e00\u5957\u300c\u95dc\u6ce8\u9ede\u5206\u96e2 Separation of Concerns, SoC\uff0c\u537b\u53c8\u4e0d\u904e\u5ea6\u8907\u96dc\u300d\u7684\u8f15\u91cf\u67b6\u69cb\uff1a \u251c\u2500\u2500 app\/ \u2502\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"H.Y. Chen\"\/>\n\t<meta name=\"google-site-verification\" content=\"-324YR5tomynX5FeTW2lTMHIX0KmPBvpxjXpOhXwi1Q\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/hyc.eshachem.com\/program\/115-birc-%e5%89%8d%e7%ab%af%e5%b7%a5%e7%a8%8b%e5%b8%ab%e8%80%83%e8%a9%a6\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"HyC Wiki - Technical articles\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"115 BIRC \u524d\u7aef\u5de5\u7a0b\u5e2b\u8003\u8a66 - HyC Wiki\" \/>\n\t\t<meta property=\"og:description\" content=\"\u9019\u88e1\u4e3b\u8981\u6703\u8b1b\u4e9b\u6280\u8853\u5c64\u9762\u7684\u6771\u897f\uff0c\u5982\u679c\u60f3\u4e86\u89e3\u8003\u6838\u984c\u76ee\u7684\u8a2d\u8a08&amp;\u601d\u8003\u904e\u7a0b(\u66f4\u662f\u6211\u5728 AI \u6642\u4ee3\u4e0b\u91cd\u65b0\u5b9a\u7fa9\u5de5\u7a0b\u5e2b\u50f9\u503c\u7684\u5fc3\u8def\u6b77\u7a0b)\u53ef\u4ee5\u9ede\u64ca\u4e0b\u65b9: \u9ede\u6211\u524d\u5f80:\u5982\u4f55\u8a2d\u8a08\u4e00\u5834\u4e0d\u88ab AI \u7834\u89e3\u7684\u8003\u6838\uff1f\u6211\u7684\u984c\u76ee\u8a2d\u8a08\u601d\u8003\u904e\u7a0b \u5f8c\u7aef\u67b6\u69cb \u9ede\u6211\u524d\u5f80\u5f8c\u7aef\u7684GitHub \u70ba\u4ec0\u9ebc\u6211\u68c4\u7528 Spring Boot \u6539\u9078 Next.js API Routes\uff1f \u65e2\u7136\u8981\u8003\u524d\u7aef\u7684 API \u4e32\u63a5\u8207\u72c0\u614b\u8655\u7406\uff0c\u6211\u7576\u7136\u5fc5\u9808\u63d0\u4f9b\u4e00\u5957\u7a69\u5b9a\u7684\u5f8c\u7aef\u670d\u52d9\u3002 \u6211\u4e4b\u524d\u7528 Spring Boot \u4f86\u5beb\u7d66\u5b78\u5f1f\u59b9\u4e32\u63a5\u7684\u5f8c\u7aef\uff0c\u4f46\u8aaa\u771f\u7684\uff0cSpring Boot \u96d6\u7136\u56b4\u8b39\uff0c\u4f46\u5c0d\u65bc\u8f15\u91cf\u5c08\u6848\u6216\u521d\u5b78\u8005\u4f86\u8aaa\u771f\u7684\u592a\u904e\u7e41\u91cd\u3002\u53ea\u662f\u8981\u5beb\u4e00\u500b\u7c21\u55ae\u7684 GET \u67e5\u8a62\uff0c\u5c31\u8981\u958b\u597d\u5e7e\u500b\u6a94\u6848\u3001\u5206 Controller \/ Service \/ Repository \/ DTO \/ Entity \u7b49\u7121\u6578\u968e\u5c64\u3002\u9019\u7a2e\u591a\u6a21\u7d44\u8207Over-engineering\uff0c\u5728\u76ee\u524d\u9019\u500b\u898f\u6a21\u4e0b\u986f\u5f97\u6709\u4e9b\u591a\u6b64\u4e00\u8209\u3002 \u70ba\u4e86\u8b93\u958b\u767c\u66f4\u654f\u6377\u3001\u67b6\u69cb\u66f4\u89aa\u6c11\uff0c\u9019\u6b21\u6211\u6539\u7528 Next.js API Routes \u4f86\u5efa\u7acb\u5f8c\u7aef API\u3002 Next.js API Routes \u96d6\u7136 Next.js \u6c92\u6709\u5f37\u5236\u898f\u5b9a\u76ee\u9304\u898f\u7bc4\uff0c\u4e0d\u904e\u6211\u7d50\u5408\u4e86\u904e\u53bb\u7684\u524d\u5f8c\u7aef\u5be6\u52d9\u7d93\u9a57\uff0c\u7cbe\u7149\u51fa\u4e00\u5957\u300c\u95dc\u6ce8\u9ede\u5206\u96e2 Separation of Concerns, SoC\uff0c\u537b\u53c8\u4e0d\u904e\u5ea6\u8907\u96dc\u300d\u7684\u8f15\u91cf\u67b6\u69cb\uff1a \u251c\u2500\u2500 app\/ \u2502\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/hyc.eshachem.com\/program\/115-birc-%e5%89%8d%e7%ab%af%e5%b7%a5%e7%a8%8b%e5%b8%ab%e8%80%83%e8%a9%a6\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/hyc.eshachem.com\/program\/wp-content\/uploads\/2026\/06\/cropped-cropped-\u672a\u547d\u540d\u8a2d\u8a08-4.png\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/hyc.eshachem.com\/program\/wp-content\/uploads\/2026\/06\/cropped-cropped-\u672a\u547d\u540d\u8a2d\u8a08-4.png\" \/>\n\t\t<meta property=\"og:image:width\" content=\"64\" \/>\n\t\t<meta property=\"og:image:height\" content=\"64\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2026-10-09T01:59:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2026-10-09T01:59:01+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:title\" content=\"115 BIRC \u524d\u7aef\u5de5\u7a0b\u5e2b\u8003\u8a66 - HyC Wiki\" \/>\n\t\t<meta name=\"twitter:description\" content=\"\u9019\u88e1\u4e3b\u8981\u6703\u8b1b\u4e9b\u6280\u8853\u5c64\u9762\u7684\u6771\u897f\uff0c\u5982\u679c\u60f3\u4e86\u89e3\u8003\u6838\u984c\u76ee\u7684\u8a2d\u8a08&amp;\u601d\u8003\u904e\u7a0b(\u66f4\u662f\u6211\u5728 AI \u6642\u4ee3\u4e0b\u91cd\u65b0\u5b9a\u7fa9\u5de5\u7a0b\u5e2b\u50f9\u503c\u7684\u5fc3\u8def\u6b77\u7a0b)\u53ef\u4ee5\u9ede\u64ca\u4e0b\u65b9: \u9ede\u6211\u524d\u5f80:\u5982\u4f55\u8a2d\u8a08\u4e00\u5834\u4e0d\u88ab AI \u7834\u89e3\u7684\u8003\u6838\uff1f\u6211\u7684\u984c\u76ee\u8a2d\u8a08\u601d\u8003\u904e\u7a0b \u5f8c\u7aef\u67b6\u69cb \u9ede\u6211\u524d\u5f80\u5f8c\u7aef\u7684GitHub \u70ba\u4ec0\u9ebc\u6211\u68c4\u7528 Spring Boot \u6539\u9078 Next.js API Routes\uff1f \u65e2\u7136\u8981\u8003\u524d\u7aef\u7684 API \u4e32\u63a5\u8207\u72c0\u614b\u8655\u7406\uff0c\u6211\u7576\u7136\u5fc5\u9808\u63d0\u4f9b\u4e00\u5957\u7a69\u5b9a\u7684\u5f8c\u7aef\u670d\u52d9\u3002 \u6211\u4e4b\u524d\u7528 Spring Boot \u4f86\u5beb\u7d66\u5b78\u5f1f\u59b9\u4e32\u63a5\u7684\u5f8c\u7aef\uff0c\u4f46\u8aaa\u771f\u7684\uff0cSpring Boot \u96d6\u7136\u56b4\u8b39\uff0c\u4f46\u5c0d\u65bc\u8f15\u91cf\u5c08\u6848\u6216\u521d\u5b78\u8005\u4f86\u8aaa\u771f\u7684\u592a\u904e\u7e41\u91cd\u3002\u53ea\u662f\u8981\u5beb\u4e00\u500b\u7c21\u55ae\u7684 GET \u67e5\u8a62\uff0c\u5c31\u8981\u958b\u597d\u5e7e\u500b\u6a94\u6848\u3001\u5206 Controller \/ Service \/ Repository \/ DTO \/ Entity \u7b49\u7121\u6578\u968e\u5c64\u3002\u9019\u7a2e\u591a\u6a21\u7d44\u8207Over-engineering\uff0c\u5728\u76ee\u524d\u9019\u500b\u898f\u6a21\u4e0b\u986f\u5f97\u6709\u4e9b\u591a\u6b64\u4e00\u8209\u3002 \u70ba\u4e86\u8b93\u958b\u767c\u66f4\u654f\u6377\u3001\u67b6\u69cb\u66f4\u89aa\u6c11\uff0c\u9019\u6b21\u6211\u6539\u7528 Next.js API Routes \u4f86\u5efa\u7acb\u5f8c\u7aef API\u3002 Next.js API Routes \u96d6\u7136 Next.js \u6c92\u6709\u5f37\u5236\u898f\u5b9a\u76ee\u9304\u898f\u7bc4\uff0c\u4e0d\u904e\u6211\u7d50\u5408\u4e86\u904e\u53bb\u7684\u524d\u5f8c\u7aef\u5be6\u52d9\u7d93\u9a57\uff0c\u7cbe\u7149\u51fa\u4e00\u5957\u300c\u95dc\u6ce8\u9ede\u5206\u96e2 Separation of Concerns, SoC\uff0c\u537b\u53c8\u4e0d\u904e\u5ea6\u8907\u96dc\u300d\u7684\u8f15\u91cf\u67b6\u69cb\uff1a \u251c\u2500\u2500 app\/ \u2502\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/hyc.eshachem.com\/program\/wp-content\/uploads\/2026\/06\/cropped-cropped-\u672a\u547d\u540d\u8a2d\u8a08-4.png\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/hyc.eshachem.com\\\/program\\\/115-birc-%e5%89%8d%e7%ab%af%e5%b7%a5%e7%a8%8b%e5%b8%ab%e8%80%83%e8%a9%a6\\\/#blogposting\",\"name\":\"115 BIRC \\u524d\\u7aef\\u5de5\\u7a0b\\u5e2b\\u8003\\u8a66 - HyC Wiki\",\"headline\":\"115 BIRC \\u524d\\u7aef\\u5de5\\u7a0b\\u5e2b\\u8003\\u8a66\",\"author\":{\"@id\":\"https:\\\/\\\/hyc.eshachem.com\\\/program\\\/author\\\/hychen\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/hyc.eshachem.com\\\/program\\\/#person\"},\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/hyc.eshachem.com\\\/program\\\/115-birc-%e5%89%8d%e7%ab%af%e5%b7%a5%e7%a8%8b%e5%b8%ab%e8%80%83%e8%a9%a6\\\/#articleImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/fc6e05e080c9ea570267ee9ed68c8b1841d745cee07c0331c5440646e0646603?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"H.Y. Chen\"},\"datePublished\":\"2026-10-09T01:59:00+00:00\",\"dateModified\":\"2026-10-09T01:59:01+00:00\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/hyc.eshachem.com\\\/program\\\/115-birc-%e5%89%8d%e7%ab%af%e5%b7%a5%e7%a8%8b%e5%b8%ab%e8%80%83%e8%a9%a6\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/hyc.eshachem.com\\\/program\\\/115-birc-%e5%89%8d%e7%ab%af%e5%b7%a5%e7%a8%8b%e5%b8%ab%e8%80%83%e8%a9%a6\\\/#webpage\"},\"articleSection\":\"Uncategorized\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/hyc.eshachem.com\\\/program\\\/115-birc-%e5%89%8d%e7%ab%af%e5%b7%a5%e7%a8%8b%e5%b8%ab%e8%80%83%e8%a9%a6\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/hyc.eshachem.com\\\/program#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/hyc.eshachem.com\\\/program\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/hyc.eshachem.com\\\/program\\\/category\\\/uncategorized\\\/#listItem\",\"name\":\"Uncategorized\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/hyc.eshachem.com\\\/program\\\/category\\\/uncategorized\\\/#listItem\",\"position\":2,\"name\":\"Uncategorized\",\"item\":\"https:\\\/\\\/hyc.eshachem.com\\\/program\\\/category\\\/uncategorized\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/hyc.eshachem.com\\\/program\\\/115-birc-%e5%89%8d%e7%ab%af%e5%b7%a5%e7%a8%8b%e5%b8%ab%e8%80%83%e8%a9%a6\\\/#listItem\",\"name\":\"115 BIRC \\u524d\\u7aef\\u5de5\\u7a0b\\u5e2b\\u8003\\u8a66\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/hyc.eshachem.com\\\/program#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/hyc.eshachem.com\\\/program\\\/115-birc-%e5%89%8d%e7%ab%af%e5%b7%a5%e7%a8%8b%e5%b8%ab%e8%80%83%e8%a9%a6\\\/#listItem\",\"position\":3,\"name\":\"115 BIRC \\u524d\\u7aef\\u5de5\\u7a0b\\u5e2b\\u8003\\u8a66\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/hyc.eshachem.com\\\/program\\\/category\\\/uncategorized\\\/#listItem\",\"name\":\"Uncategorized\"}}]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/hyc.eshachem.com\\\/program\\\/#person\",\"name\":\"H.Y. Chen\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/hyc.eshachem.com\\\/program\\\/115-birc-%e5%89%8d%e7%ab%af%e5%b7%a5%e7%a8%8b%e5%b8%ab%e8%80%83%e8%a9%a6\\\/#personImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/fc6e05e080c9ea570267ee9ed68c8b1841d745cee07c0331c5440646e0646603?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"H.Y. Chen\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/hyc.eshachem.com\\\/program\\\/author\\\/hychen\\\/#author\",\"url\":\"https:\\\/\\\/hyc.eshachem.com\\\/program\\\/author\\\/hychen\\\/\",\"name\":\"H.Y. Chen\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/hyc.eshachem.com\\\/program\\\/115-birc-%e5%89%8d%e7%ab%af%e5%b7%a5%e7%a8%8b%e5%b8%ab%e8%80%83%e8%a9%a6\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/fc6e05e080c9ea570267ee9ed68c8b1841d745cee07c0331c5440646e0646603?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"H.Y. Chen\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/hyc.eshachem.com\\\/program\\\/115-birc-%e5%89%8d%e7%ab%af%e5%b7%a5%e7%a8%8b%e5%b8%ab%e8%80%83%e8%a9%a6\\\/#webpage\",\"url\":\"https:\\\/\\\/hyc.eshachem.com\\\/program\\\/115-birc-%e5%89%8d%e7%ab%af%e5%b7%a5%e7%a8%8b%e5%b8%ab%e8%80%83%e8%a9%a6\\\/\",\"name\":\"115 BIRC \\u524d\\u7aef\\u5de5\\u7a0b\\u5e2b\\u8003\\u8a66 - HyC Wiki\",\"description\":\"\\u9019\\u88e1\\u4e3b\\u8981\\u6703\\u8b1b\\u4e9b\\u6280\\u8853\\u5c64\\u9762\\u7684\\u6771\\u897f\\uff0c\\u5982\\u679c\\u60f3\\u4e86\\u89e3\\u8003\\u6838\\u984c\\u76ee\\u7684\\u8a2d\\u8a08&\\u601d\\u8003\\u904e\\u7a0b(\\u66f4\\u662f\\u6211\\u5728 AI \\u6642\\u4ee3\\u4e0b\\u91cd\\u65b0\\u5b9a\\u7fa9\\u5de5\\u7a0b\\u5e2b\\u50f9\\u503c\\u7684\\u5fc3\\u8def\\u6b77\\u7a0b)\\u53ef\\u4ee5\\u9ede\\u64ca\\u4e0b\\u65b9: \\u9ede\\u6211\\u524d\\u5f80:\\u5982\\u4f55\\u8a2d\\u8a08\\u4e00\\u5834\\u4e0d\\u88ab AI \\u7834\\u89e3\\u7684\\u8003\\u6838\\uff1f\\u6211\\u7684\\u984c\\u76ee\\u8a2d\\u8a08\\u601d\\u8003\\u904e\\u7a0b \\u5f8c\\u7aef\\u67b6\\u69cb \\u9ede\\u6211\\u524d\\u5f80\\u5f8c\\u7aef\\u7684GitHub \\u70ba\\u4ec0\\u9ebc\\u6211\\u68c4\\u7528 Spring Boot \\u6539\\u9078 Next.js API Routes\\uff1f \\u65e2\\u7136\\u8981\\u8003\\u524d\\u7aef\\u7684 API \\u4e32\\u63a5\\u8207\\u72c0\\u614b\\u8655\\u7406\\uff0c\\u6211\\u7576\\u7136\\u5fc5\\u9808\\u63d0\\u4f9b\\u4e00\\u5957\\u7a69\\u5b9a\\u7684\\u5f8c\\u7aef\\u670d\\u52d9\\u3002 \\u6211\\u4e4b\\u524d\\u7528 Spring Boot \\u4f86\\u5beb\\u7d66\\u5b78\\u5f1f\\u59b9\\u4e32\\u63a5\\u7684\\u5f8c\\u7aef\\uff0c\\u4f46\\u8aaa\\u771f\\u7684\\uff0cSpring Boot \\u96d6\\u7136\\u56b4\\u8b39\\uff0c\\u4f46\\u5c0d\\u65bc\\u8f15\\u91cf\\u5c08\\u6848\\u6216\\u521d\\u5b78\\u8005\\u4f86\\u8aaa\\u771f\\u7684\\u592a\\u904e\\u7e41\\u91cd\\u3002\\u53ea\\u662f\\u8981\\u5beb\\u4e00\\u500b\\u7c21\\u55ae\\u7684 GET \\u67e5\\u8a62\\uff0c\\u5c31\\u8981\\u958b\\u597d\\u5e7e\\u500b\\u6a94\\u6848\\u3001\\u5206 Controller \\\/ Service \\\/ Repository \\\/ DTO \\\/ Entity \\u7b49\\u7121\\u6578\\u968e\\u5c64\\u3002\\u9019\\u7a2e\\u591a\\u6a21\\u7d44\\u8207Over-engineering\\uff0c\\u5728\\u76ee\\u524d\\u9019\\u500b\\u898f\\u6a21\\u4e0b\\u986f\\u5f97\\u6709\\u4e9b\\u591a\\u6b64\\u4e00\\u8209\\u3002 \\u70ba\\u4e86\\u8b93\\u958b\\u767c\\u66f4\\u654f\\u6377\\u3001\\u67b6\\u69cb\\u66f4\\u89aa\\u6c11\\uff0c\\u9019\\u6b21\\u6211\\u6539\\u7528 Next.js API Routes \\u4f86\\u5efa\\u7acb\\u5f8c\\u7aef API\\u3002 Next.js API Routes \\u96d6\\u7136 Next.js \\u6c92\\u6709\\u5f37\\u5236\\u898f\\u5b9a\\u76ee\\u9304\\u898f\\u7bc4\\uff0c\\u4e0d\\u904e\\u6211\\u7d50\\u5408\\u4e86\\u904e\\u53bb\\u7684\\u524d\\u5f8c\\u7aef\\u5be6\\u52d9\\u7d93\\u9a57\\uff0c\\u7cbe\\u7149\\u51fa\\u4e00\\u5957\\u300c\\u95dc\\u6ce8\\u9ede\\u5206\\u96e2 Separation of Concerns, SoC\\uff0c\\u537b\\u53c8\\u4e0d\\u904e\\u5ea6\\u8907\\u96dc\\u300d\\u7684\\u8f15\\u91cf\\u67b6\\u69cb\\uff1a \\u251c\\u2500\\u2500 app\\\/ \\u2502\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/hyc.eshachem.com\\\/program\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/hyc.eshachem.com\\\/program\\\/115-birc-%e5%89%8d%e7%ab%af%e5%b7%a5%e7%a8%8b%e5%b8%ab%e8%80%83%e8%a9%a6\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/hyc.eshachem.com\\\/program\\\/author\\\/hychen\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/hyc.eshachem.com\\\/program\\\/author\\\/hychen\\\/#author\"},\"datePublished\":\"2026-10-09T01:59:00+00:00\",\"dateModified\":\"2026-10-09T01:59:01+00:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/hyc.eshachem.com\\\/program\\\/#website\",\"url\":\"https:\\\/\\\/hyc.eshachem.com\\\/program\\\/\",\"name\":\"HyC Wiki\",\"description\":\"Technical articles\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/hyc.eshachem.com\\\/program\\\/#person\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"115 BIRC \u524d\u7aef\u5de5\u7a0b\u5e2b\u8003\u8a66 - HyC Wiki","description":"\u9019\u88e1\u4e3b\u8981\u6703\u8b1b\u4e9b\u6280\u8853\u5c64\u9762\u7684\u6771\u897f\uff0c\u5982\u679c\u60f3\u4e86\u89e3\u8003\u6838\u984c\u76ee\u7684\u8a2d\u8a08&\u601d\u8003\u904e\u7a0b(\u66f4\u662f\u6211\u5728 AI \u6642\u4ee3\u4e0b\u91cd\u65b0\u5b9a\u7fa9\u5de5\u7a0b\u5e2b\u50f9\u503c\u7684\u5fc3\u8def\u6b77\u7a0b)\u53ef\u4ee5\u9ede\u64ca\u4e0b\u65b9: \u9ede\u6211\u524d\u5f80:\u5982\u4f55\u8a2d\u8a08\u4e00\u5834\u4e0d\u88ab AI \u7834\u89e3\u7684\u8003\u6838\uff1f\u6211\u7684\u984c\u76ee\u8a2d\u8a08\u601d\u8003\u904e\u7a0b \u5f8c\u7aef\u67b6\u69cb \u9ede\u6211\u524d\u5f80\u5f8c\u7aef\u7684GitHub \u70ba\u4ec0\u9ebc\u6211\u68c4\u7528 Spring Boot \u6539\u9078 Next.js API Routes\uff1f \u65e2\u7136\u8981\u8003\u524d\u7aef\u7684 API \u4e32\u63a5\u8207\u72c0\u614b\u8655\u7406\uff0c\u6211\u7576\u7136\u5fc5\u9808\u63d0\u4f9b\u4e00\u5957\u7a69\u5b9a\u7684\u5f8c\u7aef\u670d\u52d9\u3002 \u6211\u4e4b\u524d\u7528 Spring Boot \u4f86\u5beb\u7d66\u5b78\u5f1f\u59b9\u4e32\u63a5\u7684\u5f8c\u7aef\uff0c\u4f46\u8aaa\u771f\u7684\uff0cSpring Boot \u96d6\u7136\u56b4\u8b39\uff0c\u4f46\u5c0d\u65bc\u8f15\u91cf\u5c08\u6848\u6216\u521d\u5b78\u8005\u4f86\u8aaa\u771f\u7684\u592a\u904e\u7e41\u91cd\u3002\u53ea\u662f\u8981\u5beb\u4e00\u500b\u7c21\u55ae\u7684 GET \u67e5\u8a62\uff0c\u5c31\u8981\u958b\u597d\u5e7e\u500b\u6a94\u6848\u3001\u5206 Controller \/ Service \/ Repository \/ DTO \/ Entity \u7b49\u7121\u6578\u968e\u5c64\u3002\u9019\u7a2e\u591a\u6a21\u7d44\u8207Over-engineering\uff0c\u5728\u76ee\u524d\u9019\u500b\u898f\u6a21\u4e0b\u986f\u5f97\u6709\u4e9b\u591a\u6b64\u4e00\u8209\u3002 \u70ba\u4e86\u8b93\u958b\u767c\u66f4\u654f\u6377\u3001\u67b6\u69cb\u66f4\u89aa\u6c11\uff0c\u9019\u6b21\u6211\u6539\u7528 Next.js API Routes \u4f86\u5efa\u7acb\u5f8c\u7aef API\u3002 Next.js API Routes \u96d6\u7136 Next.js \u6c92\u6709\u5f37\u5236\u898f\u5b9a\u76ee\u9304\u898f\u7bc4\uff0c\u4e0d\u904e\u6211\u7d50\u5408\u4e86\u904e\u53bb\u7684\u524d\u5f8c\u7aef\u5be6\u52d9\u7d93\u9a57\uff0c\u7cbe\u7149\u51fa\u4e00\u5957\u300c\u95dc\u6ce8\u9ede\u5206\u96e2 Separation of Concerns, SoC\uff0c\u537b\u53c8\u4e0d\u904e\u5ea6\u8907\u96dc\u300d\u7684\u8f15\u91cf\u67b6\u69cb\uff1a \u251c\u2500\u2500 app\/ \u2502","canonical_url":"https:\/\/hyc.eshachem.com\/program\/115-birc-%e5%89%8d%e7%ab%af%e5%b7%a5%e7%a8%8b%e5%b8%ab%e8%80%83%e8%a9%a6\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"google-site-verification":"-324YR5tomynX5FeTW2lTMHIX0KmPBvpxjXpOhXwi1Q","miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/hyc.eshachem.com\/program\/115-birc-%e5%89%8d%e7%ab%af%e5%b7%a5%e7%a8%8b%e5%b8%ab%e8%80%83%e8%a9%a6\/#blogposting","name":"115 BIRC \u524d\u7aef\u5de5\u7a0b\u5e2b\u8003\u8a66 - HyC Wiki","headline":"115 BIRC \u524d\u7aef\u5de5\u7a0b\u5e2b\u8003\u8a66","author":{"@id":"https:\/\/hyc.eshachem.com\/program\/author\/hychen\/#author"},"publisher":{"@id":"https:\/\/hyc.eshachem.com\/program\/#person"},"image":{"@type":"ImageObject","@id":"https:\/\/hyc.eshachem.com\/program\/115-birc-%e5%89%8d%e7%ab%af%e5%b7%a5%e7%a8%8b%e5%b8%ab%e8%80%83%e8%a9%a6\/#articleImage","url":"https:\/\/secure.gravatar.com\/avatar\/fc6e05e080c9ea570267ee9ed68c8b1841d745cee07c0331c5440646e0646603?s=96&d=mm&r=g","width":96,"height":96,"caption":"H.Y. Chen"},"datePublished":"2026-10-09T01:59:00+00:00","dateModified":"2026-10-09T01:59:01+00:00","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/hyc.eshachem.com\/program\/115-birc-%e5%89%8d%e7%ab%af%e5%b7%a5%e7%a8%8b%e5%b8%ab%e8%80%83%e8%a9%a6\/#webpage"},"isPartOf":{"@id":"https:\/\/hyc.eshachem.com\/program\/115-birc-%e5%89%8d%e7%ab%af%e5%b7%a5%e7%a8%8b%e5%b8%ab%e8%80%83%e8%a9%a6\/#webpage"},"articleSection":"Uncategorized"},{"@type":"BreadcrumbList","@id":"https:\/\/hyc.eshachem.com\/program\/115-birc-%e5%89%8d%e7%ab%af%e5%b7%a5%e7%a8%8b%e5%b8%ab%e8%80%83%e8%a9%a6\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/hyc.eshachem.com\/program#listItem","position":1,"name":"Home","item":"https:\/\/hyc.eshachem.com\/program","nextItem":{"@type":"ListItem","@id":"https:\/\/hyc.eshachem.com\/program\/category\/uncategorized\/#listItem","name":"Uncategorized"}},{"@type":"ListItem","@id":"https:\/\/hyc.eshachem.com\/program\/category\/uncategorized\/#listItem","position":2,"name":"Uncategorized","item":"https:\/\/hyc.eshachem.com\/program\/category\/uncategorized\/","nextItem":{"@type":"ListItem","@id":"https:\/\/hyc.eshachem.com\/program\/115-birc-%e5%89%8d%e7%ab%af%e5%b7%a5%e7%a8%8b%e5%b8%ab%e8%80%83%e8%a9%a6\/#listItem","name":"115 BIRC \u524d\u7aef\u5de5\u7a0b\u5e2b\u8003\u8a66"},"previousItem":{"@type":"ListItem","@id":"https:\/\/hyc.eshachem.com\/program#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/hyc.eshachem.com\/program\/115-birc-%e5%89%8d%e7%ab%af%e5%b7%a5%e7%a8%8b%e5%b8%ab%e8%80%83%e8%a9%a6\/#listItem","position":3,"name":"115 BIRC \u524d\u7aef\u5de5\u7a0b\u5e2b\u8003\u8a66","previousItem":{"@type":"ListItem","@id":"https:\/\/hyc.eshachem.com\/program\/category\/uncategorized\/#listItem","name":"Uncategorized"}}]},{"@type":"Person","@id":"https:\/\/hyc.eshachem.com\/program\/#person","name":"H.Y. Chen","image":{"@type":"ImageObject","@id":"https:\/\/hyc.eshachem.com\/program\/115-birc-%e5%89%8d%e7%ab%af%e5%b7%a5%e7%a8%8b%e5%b8%ab%e8%80%83%e8%a9%a6\/#personImage","url":"https:\/\/secure.gravatar.com\/avatar\/fc6e05e080c9ea570267ee9ed68c8b1841d745cee07c0331c5440646e0646603?s=96&d=mm&r=g","width":96,"height":96,"caption":"H.Y. Chen"}},{"@type":"Person","@id":"https:\/\/hyc.eshachem.com\/program\/author\/hychen\/#author","url":"https:\/\/hyc.eshachem.com\/program\/author\/hychen\/","name":"H.Y. Chen","image":{"@type":"ImageObject","@id":"https:\/\/hyc.eshachem.com\/program\/115-birc-%e5%89%8d%e7%ab%af%e5%b7%a5%e7%a8%8b%e5%b8%ab%e8%80%83%e8%a9%a6\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/fc6e05e080c9ea570267ee9ed68c8b1841d745cee07c0331c5440646e0646603?s=96&d=mm&r=g","width":96,"height":96,"caption":"H.Y. Chen"}},{"@type":"WebPage","@id":"https:\/\/hyc.eshachem.com\/program\/115-birc-%e5%89%8d%e7%ab%af%e5%b7%a5%e7%a8%8b%e5%b8%ab%e8%80%83%e8%a9%a6\/#webpage","url":"https:\/\/hyc.eshachem.com\/program\/115-birc-%e5%89%8d%e7%ab%af%e5%b7%a5%e7%a8%8b%e5%b8%ab%e8%80%83%e8%a9%a6\/","name":"115 BIRC \u524d\u7aef\u5de5\u7a0b\u5e2b\u8003\u8a66 - HyC Wiki","description":"\u9019\u88e1\u4e3b\u8981\u6703\u8b1b\u4e9b\u6280\u8853\u5c64\u9762\u7684\u6771\u897f\uff0c\u5982\u679c\u60f3\u4e86\u89e3\u8003\u6838\u984c\u76ee\u7684\u8a2d\u8a08&\u601d\u8003\u904e\u7a0b(\u66f4\u662f\u6211\u5728 AI \u6642\u4ee3\u4e0b\u91cd\u65b0\u5b9a\u7fa9\u5de5\u7a0b\u5e2b\u50f9\u503c\u7684\u5fc3\u8def\u6b77\u7a0b)\u53ef\u4ee5\u9ede\u64ca\u4e0b\u65b9: \u9ede\u6211\u524d\u5f80:\u5982\u4f55\u8a2d\u8a08\u4e00\u5834\u4e0d\u88ab AI \u7834\u89e3\u7684\u8003\u6838\uff1f\u6211\u7684\u984c\u76ee\u8a2d\u8a08\u601d\u8003\u904e\u7a0b \u5f8c\u7aef\u67b6\u69cb \u9ede\u6211\u524d\u5f80\u5f8c\u7aef\u7684GitHub \u70ba\u4ec0\u9ebc\u6211\u68c4\u7528 Spring Boot \u6539\u9078 Next.js API Routes\uff1f \u65e2\u7136\u8981\u8003\u524d\u7aef\u7684 API \u4e32\u63a5\u8207\u72c0\u614b\u8655\u7406\uff0c\u6211\u7576\u7136\u5fc5\u9808\u63d0\u4f9b\u4e00\u5957\u7a69\u5b9a\u7684\u5f8c\u7aef\u670d\u52d9\u3002 \u6211\u4e4b\u524d\u7528 Spring Boot \u4f86\u5beb\u7d66\u5b78\u5f1f\u59b9\u4e32\u63a5\u7684\u5f8c\u7aef\uff0c\u4f46\u8aaa\u771f\u7684\uff0cSpring Boot \u96d6\u7136\u56b4\u8b39\uff0c\u4f46\u5c0d\u65bc\u8f15\u91cf\u5c08\u6848\u6216\u521d\u5b78\u8005\u4f86\u8aaa\u771f\u7684\u592a\u904e\u7e41\u91cd\u3002\u53ea\u662f\u8981\u5beb\u4e00\u500b\u7c21\u55ae\u7684 GET \u67e5\u8a62\uff0c\u5c31\u8981\u958b\u597d\u5e7e\u500b\u6a94\u6848\u3001\u5206 Controller \/ Service \/ Repository \/ DTO \/ Entity \u7b49\u7121\u6578\u968e\u5c64\u3002\u9019\u7a2e\u591a\u6a21\u7d44\u8207Over-engineering\uff0c\u5728\u76ee\u524d\u9019\u500b\u898f\u6a21\u4e0b\u986f\u5f97\u6709\u4e9b\u591a\u6b64\u4e00\u8209\u3002 \u70ba\u4e86\u8b93\u958b\u767c\u66f4\u654f\u6377\u3001\u67b6\u69cb\u66f4\u89aa\u6c11\uff0c\u9019\u6b21\u6211\u6539\u7528 Next.js API Routes \u4f86\u5efa\u7acb\u5f8c\u7aef API\u3002 Next.js API Routes \u96d6\u7136 Next.js \u6c92\u6709\u5f37\u5236\u898f\u5b9a\u76ee\u9304\u898f\u7bc4\uff0c\u4e0d\u904e\u6211\u7d50\u5408\u4e86\u904e\u53bb\u7684\u524d\u5f8c\u7aef\u5be6\u52d9\u7d93\u9a57\uff0c\u7cbe\u7149\u51fa\u4e00\u5957\u300c\u95dc\u6ce8\u9ede\u5206\u96e2 Separation of Concerns, SoC\uff0c\u537b\u53c8\u4e0d\u904e\u5ea6\u8907\u96dc\u300d\u7684\u8f15\u91cf\u67b6\u69cb\uff1a \u251c\u2500\u2500 app\/ \u2502","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/hyc.eshachem.com\/program\/#website"},"breadcrumb":{"@id":"https:\/\/hyc.eshachem.com\/program\/115-birc-%e5%89%8d%e7%ab%af%e5%b7%a5%e7%a8%8b%e5%b8%ab%e8%80%83%e8%a9%a6\/#breadcrumblist"},"author":{"@id":"https:\/\/hyc.eshachem.com\/program\/author\/hychen\/#author"},"creator":{"@id":"https:\/\/hyc.eshachem.com\/program\/author\/hychen\/#author"},"datePublished":"2026-10-09T01:59:00+00:00","dateModified":"2026-10-09T01:59:01+00:00"},{"@type":"WebSite","@id":"https:\/\/hyc.eshachem.com\/program\/#website","url":"https:\/\/hyc.eshachem.com\/program\/","name":"HyC Wiki","description":"Technical articles","inLanguage":"en-US","publisher":{"@id":"https:\/\/hyc.eshachem.com\/program\/#person"}}]},"og:locale":"en_US","og:site_name":"HyC Wiki - Technical articles","og:type":"article","og:title":"115 BIRC \u524d\u7aef\u5de5\u7a0b\u5e2b\u8003\u8a66 - HyC Wiki","og:description":"\u9019\u88e1\u4e3b\u8981\u6703\u8b1b\u4e9b\u6280\u8853\u5c64\u9762\u7684\u6771\u897f\uff0c\u5982\u679c\u60f3\u4e86\u89e3\u8003\u6838\u984c\u76ee\u7684\u8a2d\u8a08&amp;\u601d\u8003\u904e\u7a0b(\u66f4\u662f\u6211\u5728 AI \u6642\u4ee3\u4e0b\u91cd\u65b0\u5b9a\u7fa9\u5de5\u7a0b\u5e2b\u50f9\u503c\u7684\u5fc3\u8def\u6b77\u7a0b)\u53ef\u4ee5\u9ede\u64ca\u4e0b\u65b9: \u9ede\u6211\u524d\u5f80:\u5982\u4f55\u8a2d\u8a08\u4e00\u5834\u4e0d\u88ab AI \u7834\u89e3\u7684\u8003\u6838\uff1f\u6211\u7684\u984c\u76ee\u8a2d\u8a08\u601d\u8003\u904e\u7a0b \u5f8c\u7aef\u67b6\u69cb \u9ede\u6211\u524d\u5f80\u5f8c\u7aef\u7684GitHub \u70ba\u4ec0\u9ebc\u6211\u68c4\u7528 Spring Boot \u6539\u9078 Next.js API Routes\uff1f \u65e2\u7136\u8981\u8003\u524d\u7aef\u7684 API \u4e32\u63a5\u8207\u72c0\u614b\u8655\u7406\uff0c\u6211\u7576\u7136\u5fc5\u9808\u63d0\u4f9b\u4e00\u5957\u7a69\u5b9a\u7684\u5f8c\u7aef\u670d\u52d9\u3002 \u6211\u4e4b\u524d\u7528 Spring Boot \u4f86\u5beb\u7d66\u5b78\u5f1f\u59b9\u4e32\u63a5\u7684\u5f8c\u7aef\uff0c\u4f46\u8aaa\u771f\u7684\uff0cSpring Boot \u96d6\u7136\u56b4\u8b39\uff0c\u4f46\u5c0d\u65bc\u8f15\u91cf\u5c08\u6848\u6216\u521d\u5b78\u8005\u4f86\u8aaa\u771f\u7684\u592a\u904e\u7e41\u91cd\u3002\u53ea\u662f\u8981\u5beb\u4e00\u500b\u7c21\u55ae\u7684 GET \u67e5\u8a62\uff0c\u5c31\u8981\u958b\u597d\u5e7e\u500b\u6a94\u6848\u3001\u5206 Controller \/ Service \/ Repository \/ DTO \/ Entity \u7b49\u7121\u6578\u968e\u5c64\u3002\u9019\u7a2e\u591a\u6a21\u7d44\u8207Over-engineering\uff0c\u5728\u76ee\u524d\u9019\u500b\u898f\u6a21\u4e0b\u986f\u5f97\u6709\u4e9b\u591a\u6b64\u4e00\u8209\u3002 \u70ba\u4e86\u8b93\u958b\u767c\u66f4\u654f\u6377\u3001\u67b6\u69cb\u66f4\u89aa\u6c11\uff0c\u9019\u6b21\u6211\u6539\u7528 Next.js API Routes \u4f86\u5efa\u7acb\u5f8c\u7aef API\u3002 Next.js API Routes \u96d6\u7136 Next.js \u6c92\u6709\u5f37\u5236\u898f\u5b9a\u76ee\u9304\u898f\u7bc4\uff0c\u4e0d\u904e\u6211\u7d50\u5408\u4e86\u904e\u53bb\u7684\u524d\u5f8c\u7aef\u5be6\u52d9\u7d93\u9a57\uff0c\u7cbe\u7149\u51fa\u4e00\u5957\u300c\u95dc\u6ce8\u9ede\u5206\u96e2 Separation of Concerns, SoC\uff0c\u537b\u53c8\u4e0d\u904e\u5ea6\u8907\u96dc\u300d\u7684\u8f15\u91cf\u67b6\u69cb\uff1a \u251c\u2500\u2500 app\/ \u2502","og:url":"https:\/\/hyc.eshachem.com\/program\/115-birc-%e5%89%8d%e7%ab%af%e5%b7%a5%e7%a8%8b%e5%b8%ab%e8%80%83%e8%a9%a6\/","og:image":"https:\/\/hyc.eshachem.com\/program\/wp-content\/uploads\/2026\/06\/cropped-cropped-\u672a\u547d\u540d\u8a2d\u8a08-4.png","og:image:secure_url":"https:\/\/hyc.eshachem.com\/program\/wp-content\/uploads\/2026\/06\/cropped-cropped-\u672a\u547d\u540d\u8a2d\u8a08-4.png","og:image:width":64,"og:image:height":64,"article:published_time":"2026-10-09T01:59:00+00:00","article:modified_time":"2026-10-09T01:59:01+00:00","twitter:card":"summary_large_image","twitter:title":"115 BIRC \u524d\u7aef\u5de5\u7a0b\u5e2b\u8003\u8a66 - HyC Wiki","twitter:description":"\u9019\u88e1\u4e3b\u8981\u6703\u8b1b\u4e9b\u6280\u8853\u5c64\u9762\u7684\u6771\u897f\uff0c\u5982\u679c\u60f3\u4e86\u89e3\u8003\u6838\u984c\u76ee\u7684\u8a2d\u8a08&amp;\u601d\u8003\u904e\u7a0b(\u66f4\u662f\u6211\u5728 AI \u6642\u4ee3\u4e0b\u91cd\u65b0\u5b9a\u7fa9\u5de5\u7a0b\u5e2b\u50f9\u503c\u7684\u5fc3\u8def\u6b77\u7a0b)\u53ef\u4ee5\u9ede\u64ca\u4e0b\u65b9: \u9ede\u6211\u524d\u5f80:\u5982\u4f55\u8a2d\u8a08\u4e00\u5834\u4e0d\u88ab AI \u7834\u89e3\u7684\u8003\u6838\uff1f\u6211\u7684\u984c\u76ee\u8a2d\u8a08\u601d\u8003\u904e\u7a0b \u5f8c\u7aef\u67b6\u69cb \u9ede\u6211\u524d\u5f80\u5f8c\u7aef\u7684GitHub \u70ba\u4ec0\u9ebc\u6211\u68c4\u7528 Spring Boot \u6539\u9078 Next.js API Routes\uff1f \u65e2\u7136\u8981\u8003\u524d\u7aef\u7684 API \u4e32\u63a5\u8207\u72c0\u614b\u8655\u7406\uff0c\u6211\u7576\u7136\u5fc5\u9808\u63d0\u4f9b\u4e00\u5957\u7a69\u5b9a\u7684\u5f8c\u7aef\u670d\u52d9\u3002 \u6211\u4e4b\u524d\u7528 Spring Boot \u4f86\u5beb\u7d66\u5b78\u5f1f\u59b9\u4e32\u63a5\u7684\u5f8c\u7aef\uff0c\u4f46\u8aaa\u771f\u7684\uff0cSpring Boot \u96d6\u7136\u56b4\u8b39\uff0c\u4f46\u5c0d\u65bc\u8f15\u91cf\u5c08\u6848\u6216\u521d\u5b78\u8005\u4f86\u8aaa\u771f\u7684\u592a\u904e\u7e41\u91cd\u3002\u53ea\u662f\u8981\u5beb\u4e00\u500b\u7c21\u55ae\u7684 GET \u67e5\u8a62\uff0c\u5c31\u8981\u958b\u597d\u5e7e\u500b\u6a94\u6848\u3001\u5206 Controller \/ Service \/ Repository \/ DTO \/ Entity \u7b49\u7121\u6578\u968e\u5c64\u3002\u9019\u7a2e\u591a\u6a21\u7d44\u8207Over-engineering\uff0c\u5728\u76ee\u524d\u9019\u500b\u898f\u6a21\u4e0b\u986f\u5f97\u6709\u4e9b\u591a\u6b64\u4e00\u8209\u3002 \u70ba\u4e86\u8b93\u958b\u767c\u66f4\u654f\u6377\u3001\u67b6\u69cb\u66f4\u89aa\u6c11\uff0c\u9019\u6b21\u6211\u6539\u7528 Next.js API Routes \u4f86\u5efa\u7acb\u5f8c\u7aef API\u3002 Next.js API Routes \u96d6\u7136 Next.js \u6c92\u6709\u5f37\u5236\u898f\u5b9a\u76ee\u9304\u898f\u7bc4\uff0c\u4e0d\u904e\u6211\u7d50\u5408\u4e86\u904e\u53bb\u7684\u524d\u5f8c\u7aef\u5be6\u52d9\u7d93\u9a57\uff0c\u7cbe\u7149\u51fa\u4e00\u5957\u300c\u95dc\u6ce8\u9ede\u5206\u96e2 Separation of Concerns, SoC\uff0c\u537b\u53c8\u4e0d\u904e\u5ea6\u8907\u96dc\u300d\u7684\u8f15\u91cf\u67b6\u69cb\uff1a \u251c\u2500\u2500 app\/ \u2502","twitter:image":"https:\/\/hyc.eshachem.com\/program\/wp-content\/uploads\/2026\/06\/cropped-cropped-\u672a\u547d\u540d\u8a2d\u8a08-4.png"},"aioseo_meta_data":{"post_id":"1216","title":null,"description":null,"keywords":null,"keyphrases":{"focus":{"keyphrase":"","score":0,"analysis":{"keyphraseInTitle":{"score":0,"maxScore":9,"error":1}}},"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_custom_url":null,"og_image_custom_fields":null,"og_image_url":null,"og_image_width":null,"og_image_height":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_image_url":null,"twitter_title":null,"twitter_description":null,"schema_type":"default","schema_type_options":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"BlogPosting","isEnabled":true},"graphs":[]},"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","local_seo":null,"limit_modified_date":false,"ai":{"faqs":[],"keyPoints":[],"schemas":[],"titles":[],"descriptions":[],"socialPosts":{"email":{"subject":"","preview":"","content":""},"linkedin":[],"twitter":[],"facebook":[],"instagram":[]}},"breadcrumb_settings":null,"seo_analyzer_scan_date":null,"created":"2026-10-08 15:26:31","updated":"2026-10-12 10:41:06"},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/hyc.eshachem.com\/program\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/hyc.eshachem.com\/program\/category\/uncategorized\/\" title=\"Uncategorized\">Uncategorized<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t115 BIRC \u524d\u7aef\u5de5\u7a0b\u5e2b\u8003\u8a66\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/hyc.eshachem.com\/program"},{"label":"Uncategorized","link":"https:\/\/hyc.eshachem.com\/program\/category\/uncategorized\/"},{"label":"115 BIRC \u524d\u7aef\u5de5\u7a0b\u5e2b\u8003\u8a66","link":"https:\/\/hyc.eshachem.com\/program\/115-birc-%e5%89%8d%e7%ab%af%e5%b7%a5%e7%a8%8b%e5%b8%ab%e8%80%83%e8%a9%a6\/"}],"views":109,"_links":{"self":[{"href":"https:\/\/hyc.eshachem.com\/program\/wp-json\/wp\/v2\/posts\/1216","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hyc.eshachem.com\/program\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hyc.eshachem.com\/program\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hyc.eshachem.com\/program\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/hyc.eshachem.com\/program\/wp-json\/wp\/v2\/comments?post=1216"}],"version-history":[{"count":2,"href":"https:\/\/hyc.eshachem.com\/program\/wp-json\/wp\/v2\/posts\/1216\/revisions"}],"predecessor-version":[{"id":1218,"href":"https:\/\/hyc.eshachem.com\/program\/wp-json\/wp\/v2\/posts\/1216\/revisions\/1218"}],"wp:attachment":[{"href":"https:\/\/hyc.eshachem.com\/program\/wp-json\/wp\/v2\/media?parent=1216"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hyc.eshachem.com\/program\/wp-json\/wp\/v2\/categories?post=1216"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hyc.eshachem.com\/program\/wp-json\/wp\/v2\/tags?post=1216"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}