帖子分类
Change-Id: I17bafbfe3c1c8fd26c1e12499cb3c17cd1738e23
diff --git a/src/mock/post.js b/src/mock/post.js
index abdfc6a..63f4413 100644
--- a/src/mock/post.js
+++ b/src/mock/post.js
@@ -1,17 +1,83 @@
import Mock from 'mockjs';
import MockAdapter from 'axios-mock-adapter';
-import {hotPosts} from '@/api/post'
+import {getHotPosts, getLikePosts, getPosts, getPostDetail} from '@/api/post'
/**
* 设置用户相关的 Mock 接口
* @param {MockAdapter} mock
*/
export function setupPostMock(mock){
- mock.onGet(hotPosts).reply(config => {
- let data = Mock.mock([{
- 'title':'test title',
- 'date':'2025-4-20'
- }]);
+ const hotPostsPattern = new RegExp(`^${getHotPosts}(\\?page=\\d+&size=\\d+)?$`);
+ const LikePostsPattern = new RegExp(`^${getLikePosts}(\\?page=\\d+&size=\\d+)?$`);
+ const searchPostsPattern = new RegExp(`^${getPosts}\\?((keyword=[^&]+&?)|(tags=[^&]+&?)|(author=[^&]+&?)|)+(page=\\d+)&(pageSize=\\d+)$`);
+ mock.onGet(hotPostsPattern).reply(config => {
+ const urlParams = new URLSearchParams(config.url.split('?')[1]);
+ const size = parseInt(urlParams.get('size')) || 10;
+ let data = Mock.mock({
+ [`list|${size}`]: [
+ {
+ 'postId|+1': 1,
+ 'postTitle': '@ctitle(5, 10)',
+ 'postContent': '@cparagraph(1, 3)',
+ 'author': '@cname()',
+ 'createdAt': '@date("yyyy-MM-dd")',
+ 'viewCount|1-100': 1,
+ },
+ ],
+ });
+ return [200, data.list];
+ });
+ mock.onGet(LikePostsPattern).reply(config => {
+ const urlParams = new URLSearchParams(config.url.split('?')[1]);
+ const size = parseInt(urlParams.get('size')) || 10;
+ let data = Mock.mock({
+ [`list|${size}`]: [
+ {
+ 'postId|+1': 1,
+ 'postTitle': '@ctitle(5, 10)',
+ 'postContent': '@cparagraph(1, 3)',
+ 'author': '@cname()',
+ 'createdAt': '@date("yyyy-MM-dd")',
+ 'viewCount|1-100': 1,
+ },
+ ],
+ });
+ return [200, data.list];
+ });
+ mock.onGet(searchPostsPattern).reply(config => {
+ const urlParams = new URLSearchParams(config.url.split('?')[1]);
+ const tags = urlParams.get('tags')?.split(',') || []; // 将 tags 参数解析为数组
+ const page = parseInt(urlParams.get('page')) || 1; // 默认 page 为 1
+ const size = parseInt(urlParams.get('size')) || 10; // 默认 size 为 10
+ let data = Mock.mock({
+ [`list|${size}`]: [
+ {
+ 'postId|+1': 1,
+ 'postTitle': '@ctitle(5, 10)',
+ 'postContent': '@cparagraph(1, 3)',
+ 'author': '@cname()',
+ 'createdAt': '@date("yyyy-MM-dd")',
+ 'viewCount|1-100': 1,
+ },
+ ],
+ });
+ return [200, data.list];
+ });
+
+
+ const getPostDetailPattern = new RegExp(`^${getPostDetail}/[0-9]+$`);
+ mock.onGet(getPostDetailPattern).reply(config => {
+ const postId = config.url.split('/').pop();
+ let data = Mock.mock({
+ 'postId': postId,
+ 'postTitle': '@ctitle(5, 10)',
+ 'postContent': '@cparagraph(1, 3)',
+ 'author': '@cname()',
+ 'createdAt': '@date("yyyy-MM-dd")',
+ 'viewCount|1-100': 1,
+ });
return [200, data];
});
+
+
}