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:
@@ -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...)
|
||||
|
||||
Reference in New Issue
Block a user