异常处理
原创...大约 4 分钟
Nestjs内置的异常状态码
export declare enum HttpStatus {
CONTINUE = 100,
SWITCHING_PROTOCOLS = 101,
PROCESSING = 102,
EARLYHINTS = 103,
OK = 200,
CREATED = 201,
ACCEPTED = 202,
NON_AUTHORITATIVE_INFORMATION = 203,
NO_CONTENT = 204,
RESET_CONTENT = 205,
PARTIAL_CONTENT = 206,
AMBIGUOUS = 300,
MOVED_PERMANENTLY = 301,
FOUND = 302,
SEE_OTHER = 303,
NOT_MODIFIED = 304,
TEMPORARY_REDIRECT = 307,
PERMANENT_REDIRECT = 308,
BAD_REQUEST = 400,
UNAUTHORIZED = 401,
PAYMENT_REQUIRED = 402,
FORBIDDEN = 403,
NOT_FOUND = 404,
METHOD_NOT_ALLOWED = 405,
NOT_ACCEPTABLE = 406,
PROXY_AUTHENTICATION_REQUIRED = 407,
REQUEST_TIMEOUT = 408,
CONFLICT = 409,
GONE = 410,
LENGTH_REQUIRED = 411,
PRECONDITION_FAILED = 412,
PAYLOAD_TOO_LARGE = 413,
URI_TOO_LONG = 414,
UNSUPPORTED_MEDIA_TYPE = 415,
REQUESTED_RANGE_NOT_SATISFIABLE = 416,
EXPECTATION_FAILED = 417,
I_AM_A_TEAPOT = 418,
MISDIRECTED = 421,
UNPROCESSABLE_ENTITY = 422,
FAILED_DEPENDENCY = 424,
PRECONDITION_REQUIRED = 428,
TOO_MANY_REQUESTS = 429,
INTERNAL_SERVER_ERROR = 500,
NOT_IMPLEMENTED = 501,
BAD_GATEWAY = 502,
SERVICE_UNAVAILABLE = 503,
GATEWAY_TIMEOUT = 504,
HTTP_VERSION_NOT_SUPPORTED = 505
}
含义
CONTINUE (100): 继续,请求已被服务器接受,客户端应继续发送请求的其余部分。
SWITCHING_PROTOCOLS (101): 切换协议,服务器已根据客户端的请求切换协议。
PROCESSING (102): 处理中,服务器正在处理请求,但尚未完成。
EARLYHINTS (103): 提前提示,表示服务器将发送一些响应头信息,用于提前提示客户端。
OK (200): 请求成功,服务器成功处理了请求并返回相应的数据。
CREATED (201): 已创建,请求已成功处理并导致创建了一个新资源。
ACCEPTED (202): 已接受,请求已被接受进行处理,但处理尚未完成。
NON_AUTHORITATIVE_INFORMATION (203): 非权威信息,服务器返回的信息可能不是原始服务器上的权威版本。
NO_CONTENT (204): 无内容,请求已成功处理,但响应中不包含主体内容。
RESET_CONTENT (205): 重置内容,请求已成功处理,客户端应重置视图。
PARTIAL_CONTENT (206): 部分内容,服务器成功处理了范围请求。
AMBIGUOUS (300): 多种选择,请求有多个可供选择的响应。
MOVED_PERMANENTLY (301): 永久重定向,资源已永久移动到新位置。
FOUND (302): 已找到,资源临时移动到了不同的位置。
SEE_OTHER (303): 请参阅其他,客户端应执行一个 GET 请求以获取资源。
NOT_MODIFIED (304): 未修改,资源未发生变化,可以使用客户端缓存。
TEMPORARY_REDIRECT (307): 临时重定向,类似于 302,但要求客户端保留请求方法。
PERMANENT_REDIRECT (308): 永久重定向,类似于 301,但要求客户端保留请求方法。
BAD_REQUEST (400): 错误请求,请求无效或包含无效参数。
UNAUTHORIZED (401): 未授权,请求要求身份验证或权限,但用户未提供有效的凭据。
PAYMENT_REQUIRED (402): 需要付款,表示需要付费以访问资源。
FORBIDDEN (403): 禁止访问,服务器理解请求,但拒绝执行请求。
NOT_FOUND (404): 未找到,请求的资源不存在。
METHOD_NOT_ALLOWED (405): 不允许的方法,请求使用了服务器不支持的 HTTP 方法。
NOT_ACCEPTABLE (406): 不可接受,服务器无法根据客户端请求的内容特性完成请求。
PROXY_AUTHENTICATION_REQUIRED (407): 代理身份验证要求,要求客户端提供代理身份验证凭据。
REQUEST_TIMEOUT (408): 请求超时,客户端在服务器等待请求时超时。
CONFLICT (409): 冲突,请求无法完成,因为与当前资源的状态冲突。
GONE (410): 已删除,请求的资源不再可用。
LENGTH_REQUIRED (411): 需要内容长度,请求缺少必需的 Content-Length 头字段。
PRECONDITION_FAILED (412): 先决条件失败,请求头中的条件未满足。
PAYLOAD_TOO_LARGE (413): 请求实体过大,服务器拒绝处理过大的请求。
URI_TOO_LONG (414): 请求 URI 过长,服务器拒绝处理过长的请求。
UNSUPPORTED_MEDIA_TYPE (415): 不支持的媒体类型,服务器不支持请求中的媒体类型。
REQUESTED_RANGE_NOT_SATISFIABLE (416): 请求范围不可满足,服务器无法满足请求的范围条件。
EXPECTATION_FAILED (417): 期望失败,服务器无法满足 Expect 请求头字段的期望。
I_AM_A_TEAPOT (418): 我是茶壶,服务器拒绝尝试将咖啡机作为茶壶使用。
MISDIRECTED (421): 重定向错误,请求被发送到错误的服务器。
UNPROCESSABLE_ENTITY (422): 无法处理的实体,服务器理解请求,但无法处理。
FAILED_DEPENDENCY (424): 依赖关系失败,请求依赖于其他请求,但依赖请求失败。
PRECONDITION_REQUIRED (428): 先决条件要求,要求客户端提供先决条件以访问资源。
TOO_MANY_REQUESTS (429): 请求过多,客户端已经发送过多的请求,服务器拒绝处理。
INTERNAL_SERVER_ERROR (500): 服务器错误,服务器在处理请求时发生内部错误。
NOT_IMPLEMENTED (501): 未实现,服务器不支持请求的功能。
BAD_GATEWAY (502): 错误网关,服务器作为网关或代理,从上游服务器接收到无效响应。
SERVICE_UNAVAILABLE (503): 服务不可用,服务器暂时无法处理请求。
GATEWAY_TIMEOUT (504): 网关超时,服务器作为网关或代理,在等待上游服务器响应时超时。
HTTP_VERSION_NOT_SUPPORTED (505): 不支持的 HTTP 版本,服务器不支持请求中使用的 HTTP 版本。
使用
import { HttpException, HttpStatus, Injectable } from '@nestjs/common';
import { JwtService } from '@nestjs/jwt';
import { InjectRepository } from '@nestjs/typeorm';
import { App } from './app.entity';
import { Repository } from 'typeorm';
import * as bcrypt from 'bcrypt';
@Injectable()
export class AppService {
constructor(
@InjectRepository(App)
private readonly appRepository: Repository<App>,
private readonly jwtService: JwtService,
) { }
async login() {
const username = "admin"
const password = "1234567"
const user = await this.appRepository.findOne({
where: {
userName: username
}
})
if (!user) {
throw new HttpException('用户不存在', HttpStatus.BAD_REQUEST)
}
if (user?.passWord && !await bcrypt.compare(password, user.passWord)) {
throw new HttpException('密码错误', HttpStatus.BAD_REQUEST)
}
return {
code: 200,
msg: "登录成功",
token: await this.jwtService.signAsync({ ...user })
}
}
}
Powered by Waline v2.15.7