first commit

This commit is contained in:
祀梦
2026-01-27 21:17:36 +08:00
commit b06044c91c
57 changed files with 6714 additions and 0 deletions

52
frontend/src/api/index.js Normal file
View File

@@ -0,0 +1,52 @@
import axios from 'axios'
import { showError } from '../utils/message'
const api = axios.create({
baseURL: import.meta.env.VITE_API_BASE_URL || 'http://localhost:8923',
timeout: 30000
})
api.interceptors.response.use(
response => response.data,
error => {
console.error('API请求错误:', error)
showError(error)
return Promise.reject(error)
}
)
export const statsAPI = {
getStats: () => api.get('/api/stats')
}
export const proxiesAPI = {
getProxies: (params) => api.post('/api/proxies', params),
getRandomProxy: () => api.get('/api/proxies/random'),
getProxyDetail: (ip, port) => api.get(`/api/proxies/${ip}/${port}`),
deleteProxy: (ip, port) => api.delete(`/api/proxies/${ip}/${port}`),
batchDeleteProxies: (proxies) => api.post('/api/proxies/batch-delete', { proxies }),
cleanInvalidProxies: () => api.delete('/api/proxies/clean-invalid'),
exportProxies: (format, protocol) => api.get(`/api/proxies/export/${format}`, {
params: { protocol },
responseType: 'blob'
})
}
export const crawlerAPI = {
start: (numValidators = 50) => api.post('/api/crawler/start', { num_validators: numValidators }),
stop: () => api.post('/api/crawler/stop'),
getStatus: () => api.get('/api/crawler/status')
}
export const schedulerAPI = {
setScheduler: (enabled, intervalMinutes = 60) => api.post('/api/scheduler', { enabled, interval_minutes: intervalMinutes }),
getStatus: () => api.get('/api/scheduler')
}
export const pluginsAPI = {
getPlugins: () => api.get('/api/plugins'),
togglePlugin: (pluginId, enabled) => api.put(`/api/plugins/${pluginId}/toggle`, { enabled }),
crawlPlugin: (pluginId) => api.post(`/api/plugins/${pluginId}/crawl`)
}
export default api