跳至主要內容

异常处理

刘春龙原创...大约 4 分钟NodejsNestjs教程文档

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