diff --git a/Merge/front/src/api/api_ljc.js b/Merge/front/src/api/api_ljc.js
index 8c16245..1adea99 100644
--- a/Merge/front/src/api/api_ljc.js
+++ b/Merge/front/src/api/api_ljc.js
@@ -3,7 +3,6 @@
 
 const api = axios.create({
   baseURL: 'http://10.126.59.25:5715/api/',
-  // baseURL: 'http://127.0.0.1:5715/api/',
   withCredentials: true
 });
 
@@ -16,11 +15,11 @@
 export const getFavorites = (userId) => api.get(`/user/${userId}/favorites`);
 
 // 关注相关API
-export const followUser = (followerId,followeeId) => {
-  return api.post(`/follow/${followerId}/${followeeId}`);
+export const followUser = (followeeId) => {
+  return api.post(`/follow/${followeeId}`);
 };
-export const unfollowUser = (followerId,followeeId) => {
-  return api.delete(`/follow/${followerId}/${followeeId}`);
+export const unfollowUser = (followeeId) => {
+  return api.delete(`/follow/${followeeId}`);
 };
 
 // 帖子相关API
@@ -33,56 +32,5 @@
 export const getUserInteractions = (userId) => api.get(`/user/${userId}/interactions`);
 // 获取粉丝
 export const getUserFollowers = (userId) => api.get(`/user/${userId}/followers`);
-// ================= 帖子互动API =================
-
-/**
- * 点赞帖子
- * @param {number} userId 用户ID
- * @param {number} postId 帖子ID
- * @returns 操作结果
- */
-export const likePost = (userId, postId) => {
-  return api.post(`/users/${userId}/posts/${postId}/like`);
-};
-
-/**
- * 取消点赞
- * @param {number} userId 用户ID
- * @param {number} postId 帖子ID
- * @returns 操作结果
- */
-export const unlikePost = (userId, postId) => {
-  return api.delete(`/users/${userId}/posts/${postId}/like`);
-};
-
-/**
- * 收藏帖子
- * @param {number} userId 用户ID
- * @param {number} postId 帖子ID
- * @returns 操作结果
- */
-export const favoritePost = (userId, postId) => {
-  return api.post(`/users/${userId}/posts/${postId}/favorite`);
-};
-
-/**
- * 取消收藏
- * @param {number} userId 用户ID
- * @param {number} postId 帖子ID
- * @returns 操作结果
- */
-export const unfavoritePost = (userId, postId) => {
-  return api.delete(`/users/${userId}/posts/${postId}/favorite`);
-};
-
-/**
- * 获取当前用户对帖子的互动状态
- * @param {number} userId 用户ID
- * @param {number} postId 帖子ID
- * @returns {object} { liked: boolean, favorited: boolean }
- */
-export const getPostInteractionStatus = (userId, postId) => {
-  return api.get(`/users/${userId}/posts/${postId}/interaction-status`);
-};
 
 export default api;
\ No newline at end of file
