fix: resolve Gin route conflict between /docs/:slug and /docs/admin, move admin docs API to /admin/docs
Docker Build / Build and Push Docker Image (push) Successful in 4m33s
Docker Build / Build and Push Docker Image (push) Successful in 4m33s
This commit is contained in:
@@ -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)
|
||||
|
||||
+4
-4
@@ -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) {
|
||||
|
||||
+5
-5
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user