diff --git a/src/api/torrent.js b/src/api/torrent.js
index cd66464..2bde101 100644
--- a/src/api/torrent.js
+++ b/src/api/torrent.js
@@ -21,6 +21,7 @@
  * @param {Object} searchParams - 搜索参数
  * @param {string} searchParams.keyword - 搜索关键词
  * @param {string} searchParams.category - 分类
+
  * @param {string} searchParams.sortBy - 排序字段
  * @param {string} searchParams.sortOrder - 排序方向
  * @param {number} searchParams.page - 页码
@@ -28,21 +29,61 @@
  * @returns {Promise}
  */
 export function searchTorrents(searchParams) {
-  return request({
-    url: '/torrent/search',
-    method: 'post',
-    data: searchParams
-  }).catch(error => {
-    console.error('🚨 API请求失败:', {
-      url: '/torrent/search',
-      requestedURL: error.config?.url,
-      baseURL: error.config?.baseURL,
-      fullURL: error.config?.baseURL ? error.config.baseURL + error.config.url : error.config?.url,
-      status: error.response?.status,
-      statusText: error.response?.statusText
+  const hasCategory = searchParams.category 
+  
+  if (hasCategory) {
+    // 使用GET方式，支持category查询参数
+    const queryParams = new URLSearchParams()
+    
+    if (searchParams.keyword) {
+      queryParams.append('keyword', searchParams.keyword)
+    }
+    queryParams.append('entriesPerPage', searchParams.entriesPerPage || 20)
+    queryParams.append('page', searchParams.page || 0)
+    
+    // 优先使用category参数，如果没有则使用categoryId
+    const categoryValue = searchParams.category || searchParams.categoryId
+    if (categoryValue) {
+      queryParams.append('category', categoryValue)
+    }
+    
+    const url = `/torrent/search?${queryParams.toString()}`
+    console.log('🔍 使用GET方式搜索种子，URL:', url)
+    
+    return request({
+      url: url,
+      method: 'get'
+    }).catch(error => {
+      console.error('🚨 GET API请求失败:', {
+        url: url,
+        requestedURL: error.config?.url,
+        baseURL: error.config?.baseURL,
+        fullURL: error.config?.baseURL ? error.config.baseURL + error.config.url : error.config?.url,
+        status: error.response?.status,
+        statusText: error.response?.statusText
+      })
+      throw error
     })
-    throw error
-  })
+  } else {
+    // 使用POST方式，兼容原有的搜索方式
+    console.log('🔍 使用POST方式搜索种子，参数:', searchParams)
+    
+    return request({
+      url: '/torrent/search',
+      method: 'post',
+      data: searchParams
+    }).catch(error => {
+      console.error('🚨 POST API请求失败:', {
+        url: '/torrent/search',
+        requestedURL: error.config?.url,
+        baseURL: error.config?.baseURL,
+        fullURL: error.config?.baseURL ? error.config.baseURL + error.config.url : error.config?.url,
+        status: error.response?.status,
+        statusText: error.response?.statusText
+      })
+      throw error
+    })
+  }
 }
 
 /**
