feat(API): default format is json, add error page