Unify fallback and unimplemented API error handling

- Add a shared common error response schema and unknown error code for business-level fallbacks
- Return business error payloads for router NoRoute and NoMethod fallbacks
- Align the existing event list fallback response with the shared error structure
- Introduce an explicit unimplemented API error type instead of relying on formatted strings
- Make /api batch dispatch return per-item status 600 error entries for unimplemented modules and actions without failing the whole batch

Signed-off-by: Sean Du <do4suki@gmail.com>
This commit is contained in:
2026-06-06 17:13:27 +08:00
parent f6466989c6
commit 0dd5df0302
35 changed files with 149 additions and 72 deletions
+18
View File
@@ -2,6 +2,9 @@
package router
import (
"honoka-chan/internal/constant"
commonschema "honoka-chan/internal/schema/common"
"honoka-chan/internal/session"
"net/http"
"os"
"path/filepath"
@@ -104,6 +107,21 @@ func SifRouter(r *gin.Engine) {
ctx.HTML(http.StatusOK, "common/manga.html", gin.H{})
})
notFoundHandler := func(ctx *gin.Context) {
ss := session.Attach(ctx)
defer ss.Finalize()
ss.Respond(commonschema.ErrorResp{
ResponseData: commonschema.ErrorData{
ErrorCode: constant.ErrorCodeUnknown,
},
ReleaseInfo: []any{},
StatusCode: 600,
})
}
r.NoRoute(notFoundHandler)
r.NoMethod(notFoundHandler)
// router
for groupPath, groupInfo := range groups {
groupApi := r.Group(groupPath, groupInfo.InitialHandlers...)