本文整理汇总了TypeScript中koa.Context.throw方法的典型用法代码示例。如果您正苦于以下问题:TypeScript Context.throw方法的具体用法?TypeScript Context.throw怎么用?TypeScript Context.throw使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类koa.Context
的用法示例。
在下文中一共展示了Context.throw方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。
示例1: parseInt
router.param('book', (book: string, ctx: Context, next: () => Promise<any>) => {
if (isNumber(book)) {
const bookNumber = parseInt(book, 10)
if (bookNumber < 0 || bookNumber > books.get('rev')!!) {
ctx.throw('Book out of bounds', 422)
}
ctx.params.book_id = bookNumber
} else {
book = book.toLowerCase()
if (!books[book]) {
ctx.throw('Unknown book', 422)
}
ctx.params.book_id = books[book]
}
return next()
})
示例2: return
return (ctx: Context, next: () => Promise<any>) => {
const { params, request: { body, query } } = ctx;
const { error, value } = schema.validate({ body, query, params }, options);
if (error) {
return ctx.throw(422, error);
}
ctx.params = value.params;
ctx.request.body = value.body;
ctx.request.query = value.query;
return next();
};
示例3: async
export default async (ctx: Context, next: () => Promise<any>) => {
try {
await next();
if (ctx.response.status === 404 && !ctx.response.body) {
ctx.throw(404);
}
} catch (err) {
ctx.status = typeof err.status === 'number' ? err.status : 500;
// (<any> ctx.app).emit('error', err, ctx);
const type = ctx.accepts(['json', 'html', 'text/plain']);
// json
if (type === 'json') {
ctx.type = 'application/json';
if (process.env.NODE_ENV !== 'production') {
ctx.body = { code: ctx.status, error: err.message, stack: err.stack };
}
else if (err.expose) {
ctx.body = { code: ctx.status, error: err.message };
}
else {
ctx.body = { code: ctx.status, error: STATUS_CODES[ctx.status] };
}
}
// html
else if (type === 'html') {
ctx.type = 'text/html';
ctx.body = ctx.render('../templates/error.html', {
error: err,
status: ctx.status,
env: process.env.NODE_ENV,
});
}
// any
else {
ctx.type = 'text/plain';
if (process.env.NODE_ENV !== 'production') {
ctx.body = err.message;
}
else if (err.expose) {
ctx.body = err.message;
}
else {
ctx.body = STATUS_CODES[ctx.status];
}
}
// 错误日志
logger.error(`path: ${ctx.path}, status: ${err.status}, message: ${err.message}, stack: ${err.stack}`);
}
};
示例4: validate
async function validate(ctx: Context, next: Function) {
if (typeof ctx.query[name] !== type) ctx.throw(400, `${name}'s type should be ${type}'`)
await next();
}