diff --git a/src/api/forum.js b/src/api/forum.js
new file mode 100644
index 0000000..b228024
--- /dev/null
+++ b/src/api/forum.js
@@ -0,0 +1,38 @@
+import request from './request'
+
+export function getAllForums() {
+    return request({
+        url: '/api/forums',
+        method: 'get'
+    })
+}
+
+export function getForumById(id) {
+    return request({
+        url: `/api/forums/${id}`,
+        method: 'get'
+    })
+}
+
+export function createForum(data) {
+    return request({
+        url: '/api/forums',
+        method: 'post',
+        data
+    })
+}
+
+export function updateForum(id, data) {
+    return request({
+        url: `/api/forums/${id}`,
+        method: 'put',
+        data
+    })
+}
+
+export function deleteForum(id) {
+    return request({
+        url: `/api/forums/${id}`,
+        method: 'delete'
+    })
+} 
\ No newline at end of file
diff --git a/src/api/forumTag.js b/src/api/forumTag.js
new file mode 100644
index 0000000..a63895e
--- /dev/null
+++ b/src/api/forumTag.js
@@ -0,0 +1,38 @@
+import request from './request'
+
+export function getAllTags() {
+    return request({
+        url: '/api/tags',
+        method: 'get'
+    })
+}
+
+export function createTag(data) {
+    return request({
+        url: '/api/tags',
+        method: 'post',
+        data
+    })
+}
+
+export function deleteTag(tagId) {
+    return request({
+        url: `/api/tags/${tagId}`,
+        method: 'delete'
+    })
+}
+
+export function getTopicTags(topicId) {
+    return request({
+        url: `/api/tags/topics/${topicId}`,
+        method: 'get'
+    })
+}
+
+export function assignTagsToTopic(topicId, tagNames) {
+    return request({
+        url: `/api/tags/topics/${topicId}/assign`,
+        method: 'post',
+        data: tagNames
+    })
+} 
\ No newline at end of file
diff --git a/src/api/post.js b/src/api/post.js
new file mode 100644
index 0000000..c49293b
--- /dev/null
+++ b/src/api/post.js
@@ -0,0 +1,52 @@
+import request from './request'
+
+export function getPostsByTopic(topicId) {
+    return request({
+        url: `/api/posts/topic/${topicId}`,
+        method: 'get'
+    })
+}
+
+export function getPostTreeByTopic(topicId) {
+    return request({
+        url: `/api/posts/topic/${topicId}/tree`,
+        method: 'get'
+    })
+}
+
+export function createPost(data) {
+    return request({
+        url: '/api/posts',
+        method: 'post',
+        data
+    })
+}
+
+export function getPostById(id) {
+    return request({
+        url: `/api/posts/${id}`,
+        method: 'get'
+    })
+}
+
+export function updatePost(id, data) {
+    return request({
+        url: `/api/posts/${id}`,
+        method: 'put',
+        data
+    })
+}
+
+export function deletePost(id) {
+    return request({
+        url: `/api/posts/${id}`,
+        method: 'delete'
+    })
+}
+
+export function getUserPosts(userId) {
+    return request({
+        url: `/api/posts/user/${userId}`,
+        method: 'get'
+    })
+} 
\ No newline at end of file
diff --git a/src/api/postLike.js b/src/api/postLike.js
new file mode 100644
index 0000000..9ad674a
--- /dev/null
+++ b/src/api/postLike.js
@@ -0,0 +1,22 @@
+import request from './request'
+
+export function likePost(postId, userId) {
+    return request({
+        url: `/api/post-likes/${postId}/like/${userId}`,
+        method: 'post'
+    })
+}
+
+export function unlikePost(postId, userId) {
+    return request({
+        url: `/api/post-likes/${postId}/unlike/${userId}`,
+        method: 'delete'
+    })
+}
+
+export function getPostLikeCount(postId) {
+    return request({
+        url: `/api/post-likes/${postId}/count`,
+        method: 'get'
+    })
+} 
\ No newline at end of file
diff --git a/src/api/posts.js b/src/api/posts.js
new file mode 100644
index 0000000..01a347e
--- /dev/null
+++ b/src/api/posts.js
@@ -0,0 +1,7 @@
+import request from './request';
+
+export const getTopicDetail = (id) => request.get(` /posts/${id}`);
+export const getTopicPosts = (topicId, page = 1, size = 20) => request.get(`/posts/topic/${topicId}`, { params: { page, size } });
+export const createPost = (data) => request.post('/posts', data);
+export const updatePost = (id, data) => request.put(`/posts/${id}`, data);
+export const deletePost = (id) => request.delete(`/posts/${id}`);
\ No newline at end of file
diff --git a/src/api/request.js b/src/api/request.js
index 0e06f0a..01da8a3 100644
--- a/src/api/request.js
+++ b/src/api/request.js
@@ -5,7 +5,7 @@
 const request = axios.create({
   // 关键：不要设置baseURL，或者设置为空字符串
   // 这样请求会发送到当前域名（8080），然后被代理转发到8081
-  baseURL: process.env.VUE_APP_BASE_API || '/api',
+  baseURL: process.env.VUE_APP_BASE_API || '',
   timeout: 10000,
   headers: {
     // 'Content-Type': 'application/json'
@@ -15,15 +15,27 @@
 request.interceptors.request.use(
   config => {
     const token = localStorage.getItem('token')
-    console.log('📤 添加 token 到请求头:', token)
+    console.log('📤 Token长度:', token ? token.length : 0)
+    console.log('📤 Token前50字符:', token ? token.substring(0, 50) + '...' : 'null')
+    
     if (token) {
+      // 检查token是否过大
+      if (token.length > 8000) {
+        console.warn('⚠️ Token过大，长度:', token.length)
+        // 清除过大的token
+        localStorage.removeItem('token')
+        localStorage.removeItem('tokenInfo')
+        localStorage.removeItem('userInfo')
+        localStorage.removeItem('isLoggedIn')
+        ElMessage.error('登录信息过大，请重新登录')
+        router.push('/login')
+        return Promise.reject(new Error('Token过大'))
+      }
       config.headers.Authorization = `Bearer ${token}`
     }
     
     console.log('🚀 发送请求:', config.method?.toUpperCase(), config.url)
     console.log('📤 请求数据:', config.data)
-    console.log('🔍 VUE_APP_BASE_API:', process.env.VUE_APP_BASE_API)
-    console.log('🔍 VUE_APP_BACKEND:', process.env.VUE_APP_BACKEND)
     
     return config
   },
@@ -59,6 +71,15 @@
           ElMessage.error('API接口不存在')
           console.error('❌ 请求的URL:', error.config.url)
           break
+        case 431:
+          console.error('❌ 请求头太大 (431)，可能是Token过大')
+          localStorage.removeItem('token')
+          localStorage.removeItem('tokenInfo')
+          localStorage.removeItem('userInfo')
+          localStorage.removeItem('isLoggedIn')
+          ElMessage.error('登录信息过大，请重新登录')
+          router.push('/login')
+          break
         case 500:
           ElMessage.error('服务器内部错误')
           break
diff --git a/src/api/subscription.js b/src/api/subscription.js
new file mode 100644
index 0000000..0090fa4
--- /dev/null
+++ b/src/api/subscription.js
@@ -0,0 +1,32 @@
+import request from './request'
+
+export function subscribeTopic(data) {
+    return request({
+        url: '/api/subscriptions/subscribe',
+        method: 'post',
+        data
+    })
+}
+
+export function unsubscribeTopic(data) {
+    return request({
+        url: '/api/subscriptions/unsubscribe',
+        method: 'post',
+        data
+    })
+}
+
+export function checkSubscription(topicId) {
+    return request({
+        url: '/api/subscriptions/check',
+        method: 'get',
+        params: { topicId }
+    })
+}
+
+export function getSubscriptionList() {
+    return request({
+        url: '/api/subscriptions/list',
+        method: 'get'
+    })
+} 
\ No newline at end of file
diff --git a/src/api/topic.js b/src/api/topic.js
new file mode 100644
index 0000000..629b71f
--- /dev/null
+++ b/src/api/topic.js
@@ -0,0 +1,53 @@
+import request from './request'
+
+export function getAllTopics() {
+    return request({
+        url: '/api/topics',
+        method: 'get'
+    })
+}
+
+export function getTopicById(id) {
+    return request({
+        url: `/api/topics/${id}`,
+        method: 'get'
+    })
+}
+
+export function getTopicsByForum(forumId) {
+    return request({
+        url: `/api/topics/forum/${forumId}`,
+        method: 'get'
+    })
+}
+
+export function createTopic(data) {
+    return request({
+        url: '/api/topics',
+        method: 'post',
+        data
+    })
+}
+
+export function updateTopic(id, data) {
+    return request({
+        url: `/api/topics/${id}`,
+        method: 'put',
+        data
+    })
+}
+
+export function deleteTopic(id) {
+    return request({
+        url: `/api/topics/${id}`,
+        method: 'delete'
+    })
+}
+
+export function searchTopics(query, forumId, page = 0, size = 10) {
+    return request({
+        url: '/api/topics/search',
+        method: 'get',
+        params: { q: query, forumId, page, size }
+    })
+}
diff --git a/src/api/topicView.js b/src/api/topicView.js
new file mode 100644
index 0000000..f4410e1
--- /dev/null
+++ b/src/api/topicView.js
@@ -0,0 +1,16 @@
+import request from './request'
+
+export function recordTopicView(params) {
+    return request({
+        url: '/topic-views/record',
+        method: 'post',
+        params
+    })
+}
+
+export function getUserViewHistory() {
+    return request({
+        url: '/topic-views',
+        method: 'get'
+    })
+} 
\ No newline at end of file
diff --git a/src/api/user.js b/src/api/user.js
index 2cfb40c..32073b1 100644
--- a/src/api/user.js
+++ b/src/api/user.js
@@ -7,7 +7,18 @@
    */
   getCurrentUser() {
     return request({
-      url: '/user/profile',
+      url: '/auth/status',
+      method: 'get'
+    })
+  },
+
+  /**
+   * 获取用户分享率和统计信息
+   * @returns {Promise<Object>} 分享率统计信息
+   */
+  getUserRatioInfo() {
+    return request({
+      url: '/torrent/ratio/info',
       method: 'get'
     })
   },
diff --git a/src/api/userHistory.js b/src/api/userHistory.js
new file mode 100644
index 0000000..2853d92
--- /dev/null
+++ b/src/api/userHistory.js
@@ -0,0 +1,15 @@
+import request from './request'
+
+export function getUserHistory(userId) {
+    return request({
+        url: `/api/history/${userId}`,
+        method: 'get'
+    })
+}
+
+export function getUserHistoryByType(userId, type) {
+    return request({
+        url: `/api/history/${userId}/${type}`,
+        method: 'get'
+    })
+} 
\ No newline at end of file
