diff --git a/router/api-router.go b/router/api-router.go index 903ad3c55..e83669d3e 100644 --- a/router/api-router.go +++ b/router/api-router.go @@ -355,8 +355,8 @@ func SetApiRouter(router *gin.Engine) { docsPublic.GET("/:slug", controller.GetDocument) } - // Document routes (admin) - docsAdmin := apiRouter.Group("/docs/admin") + // Document routes (admin) - use /admin/docs to avoid conflict with /:slug + docsAdmin := apiRouter.Group("/admin/docs") docsAdmin.Use(middleware.AdminAuth()) { docsAdmin.GET("/categories", controller.GetCategories) diff --git a/web/default/src/features/doc-categories/index.tsx b/web/default/src/features/doc-categories/index.tsx index 558edecd6..4652053c8 100644 --- a/web/default/src/features/doc-categories/index.tsx +++ b/web/default/src/features/doc-categories/index.tsx @@ -49,7 +49,7 @@ export function DocCategories() { const fetchCategories = useCallback(async () => { try { setLoading(true) - const res = await api.get('/api/docs/admin/categories') + const res = await api.get('/api/admin/docs/categories') setCategories(res.data?.data || []) } catch (err) { console.error('Failed to fetch categories:', err) @@ -81,9 +81,9 @@ export function DocCategories() { sort_order: form.sort_order, } if (editingCategory) { - await api.put(`/api/docs/admin/categories/${editingCategory.id}`, payload) + await api.put(`/api/admin/docs/categories/${editingCategory.id}`, payload) } else { - await api.post('/api/docs/admin/categories', payload) + await api.post('/api/admin/docs/categories', payload) } setDialogOpen(false) fetchCategories() @@ -95,7 +95,7 @@ export function DocCategories() { const handleDelete = async () => { if (!deleteTarget) return try { - await api.delete(`/api/docs/admin/categories/${deleteTarget.id}`) + await api.delete(`/api/admin/docs/categories/${deleteTarget.id}`) setDeleteTarget(null) fetchCategories() } catch (err) { diff --git a/web/default/src/features/docs-management/index.tsx b/web/default/src/features/docs-management/index.tsx index e8d43ab5b..1abd209e2 100644 --- a/web/default/src/features/docs-management/index.tsx +++ b/web/default/src/features/docs-management/index.tsx @@ -69,8 +69,8 @@ export function DocsManagement() { try { setLoading(true) const [docsRes, catsRes] = await Promise.all([ - api.get('/api/docs/admin/'), - api.get('/api/docs/admin/categories'), + api.get('/api/admin/docs/'), + api.get('/api/admin/docs/categories'), ]) const docsData = docsRes.data?.data setDocs(Array.isArray(docsData) ? docsData : docsData?.items || []) @@ -114,9 +114,9 @@ export function DocsManagement() { sort_order: form.sort_order, } if (editingDoc) { - await api.put(`/api/docs/admin/${editingDoc.id}`, payload) + await api.put(`/api/admin/docs/${editingDoc.id}`, payload) } else { - await api.post('/api/docs/admin/', payload) + await api.post('/api/admin/docs/', payload) } setDialogOpen(false) fetchData() @@ -128,7 +128,7 @@ export function DocsManagement() { const handleDelete = async () => { if (!deleteTarget) return try { - await api.delete(`/api/docs/admin/${deleteTarget.id}`) + await api.delete(`/api/admin/docs/${deleteTarget.id}`) setDeleteTarget(null) fetchData() } catch (err) {