diff --git a/README.md b/README.md index 3ebf8a6..b207654 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,22 @@ # ⌨️ Conduit SSR -![version](https://img.shields.io/badge/version-0.2.0-green) [![license](https://img.shields.io/badge/license-MIT-blue)](./LICENSE) ![Koa](https://img.shields.io/badge/Koa-%5E2.14.2-fuchsia) ![JWT](https://img.shields.io/badge/JWT-%5E9.0.0-00f3e6) ![ArtTemplate](https://img.shields.io/badge/ArtTemplate-%5E4.13.2-0f83cd) ![MongoDB](https://img.shields.io/badge/MongoDB-%5E5.1.0-00ed64) ![Mongoose](https://img.shields.io/badge/Mongoose-%5E7.0.3-880000) ![pnpm](https://img.shields.io/badge/pnpm-8.15.6-f69220) - +![version](https://img.shields.io/badge/version-0.2.0-green) +[![license](https://img.shields.io/badge/license-MIT-blue)](./LICENSE) +![Koa](https://img.shields.io/badge/Koa-%5E2.14.2-33333d) +![JWT](https://img.shields.io/badge/JWT-%5E9.0.0-00f3e6) +![ArtTemplate](https://img.shields.io/badge/ArtTemplate-%5E4.13.2-0f83cd) +![MongoDB](https://img.shields.io/badge/MongoDB-%5E5.1.0-00ed64) +![Mongoose](https://img.shields.io/badge/Mongoose-%5E7.0.3-880000) +![pnpm](https://img.shields.io/badge/pnpm-8.15.6-f69220) ## 💡 Introduction -Realworld: "The mother of all demo apps" — Exemplary SSR fullstack Medium.com clone (called [Conduit](https://github.com/yoonge/conduit-ssr)), built with Art-Template + CORS + JWT + Koa2 + MongoDB + Mongoose + TypeScript. +![pnpm-managed](https://img.shields.io/badge/pnpm-managed-f69220) +![Koa Badge](https://img.shields.io/badge/koa-2?logo=koa&logoColor=white&labelColor=%2333333d&color=white) -Besides,this repository also provides RESTful APIs for [Conduit React](https://github.com/yoonge/conduit-react). +Realworld: "The mother of all demo apps" — Exemplary SSR fullstack Medium.com clone (called [Conduit](https://github.com/yoonge/conduit-ssr)) in TypeScript, built with art-template + CORS + JWT + Koa2 + MongoDB + Mongoose. +Besides,this repository also provides RESTful APIs for [Conduit React](https://github.com/yoonge/conduit-react). ## 🔰 Getting Started @@ -22,26 +30,19 @@ $ pnpm i $ pnpm dev ``` - - - - ## 📄 License Conduit SSR is [MIT-licensed](./LICENSE). - - ----- - +--- ## 🏗️ Scaffold @@ -52,5 +53,3 @@ $ cd conduit-ssr $ pnpm create vite . --template vanilla-ts ``` - - diff --git a/package.json b/package.json index 5416d89..8d48299 100644 --- a/package.json +++ b/package.json @@ -1,9 +1,9 @@ { "author": "Yoonge <7884008@qq.com>", - "description": "Realworld: 'The mother of all demo apps' — Exemplary SSR fullstack Medium.com clone (called Conduit), built with Art-Template + CORS + JWT + Koa2 + MongoDB + Mongoose + TypeScript.", + "description": "Exemplary SSR fullstack realworld application (called Conduit) in TypeScript, built with art-template + CORS + JWT + Koa2 + MongoDB + Mongoose, managed by pnpm.", "keywords": [ "API", - "Art-Template", + "art-template", "Conduit", "CORS", "ESLint", @@ -13,6 +13,7 @@ "md5", "MongoDB", "Mongoose", + "pnpm", "Prettier", "RealWorld", "RESTful", diff --git a/public/images/node.ico b/public/images/node.ico new file mode 100644 index 0000000..f74a074 Binary files /dev/null and b/public/images/node.ico differ diff --git a/public/images/nodejs.png b/public/images/nodejs.png new file mode 100644 index 0000000..d5c5edd Binary files /dev/null and b/public/images/nodejs.png differ diff --git a/src/api/controllers/topic.ts b/src/api/controllers/topic.ts index b70170b..29c8ab7 100644 --- a/src/api/controllers/topic.ts +++ b/src/api/controllers/topic.ts @@ -32,7 +32,8 @@ export default class TopicCtrl { ctx.body = { code: 200, msg: 'Logged out.', - formatTopics, + page: Number(page), + topics: formatTopics, total } return @@ -41,7 +42,8 @@ export default class TopicCtrl { ctx.body = { code: 200, msg: 'Logged in.', - formatTopics, + page: Number(page), + topics: formatTopics, total, user } @@ -105,7 +107,8 @@ export default class TopicCtrl { ctx.body = { code: 200, msg: 'Tag query succeed.', - formatTopics, + page: Number(page), + topics: formatTopics, total } return @@ -114,7 +117,8 @@ export default class TopicCtrl { ctx.body = { code: 200, msg: 'Tag query succeed.', - formatTopics, + page: Number(page), + topics: formatTopics, total, user } diff --git a/src/api/controllers/user.ts b/src/api/controllers/user.ts index 955d9a3..aa71976 100644 --- a/src/api/controllers/user.ts +++ b/src/api/controllers/user.ts @@ -172,7 +172,8 @@ export default class UserCtrl { ctx.body = { code: 200, msg: 'Query my own topics succeed.', - formatTopics, + page: Number(page), + topics: formatTopics, total, user } @@ -202,7 +203,8 @@ export default class UserCtrl { ctx.body = { code: 200, msg: 'Query my favorite topics succeed.', - formatTopics, + page: Number(page), + topics: formatTopics, total, user } @@ -288,7 +290,8 @@ export default class UserCtrl { ctx.body = { code: 200, msg: `User ${theUser?.nickname}'s topics query succeed.`, - formatTopics, + page: Number(page), + topics: formatTopics, theUser, total, user @@ -322,7 +325,8 @@ export default class UserCtrl { ctx.body = { code: 200, msg: `User ${theUser?.nickname}'s favorites query succeed.`, - formatTopics, + page: Number(page), + topics: formatTopics, theUser, total, user diff --git a/test.http b/test.http index eea1922..ecb9fff 100644 --- a/test.http +++ b/test.http @@ -4,22 +4,23 @@ # you'll see what happened, have fun! @host = http://localhost:3000/api +@json = application/json -### Login -# @name loggedIn +### User Login +# @name user_login POST {{host}}/login HTTP/1.1 -content-type: application/json +content-type: {{json}} { - "email": "one@qq.com", + "email": "yoonge@qq.com", "password": "123456" } -### Register +### User Register POST {{host}}/register HTTP/1.1 -content-type: application/json +content-type: {{json}} { "email": "q@qq.com", @@ -50,24 +51,24 @@ GET {{host}}/tags/react HTTP/1.1 ### User Profile, Own Topics GET {{host}}/profile/one HTTP/1.1 -Authorization: {{loggedIn.response.body.$.token}} +Authorization: {{user_login.response.body.$.token}} ### User Profile, Favorites GET {{host}}/profile/one/favorites HTTP/1.1 -Authorization: {{loggedIn.response.body.$.token}} +Authorization: {{user_login.response.body.$.token}} ### My Settings GET {{host}}/settings HTTP/1.1 -Authorization: {{loggedIn.response.body.$.token}} +Authorization: {{user_login.response.body.$.token}} ### My Topics GET {{host}}/my-topics HTTP/1.1 -Authorization: {{loggedIn.response.body.$.token}} +Authorization: {{user_login.response.body.$.token}} ### My Favorites GET {{host}}/my-favorites HTTP/1.1 -Authorization: {{loggedIn.response.body.$.token}} +Authorization: {{user_login.response.body.$.token}}