Nest 应用里自带的 Exceptions layer 可以处理应用里发生的异常, 终端用户会得到一个非常友好的响应。
我们可以先手动造一个异常, 打开 posts 里的 posts.controller, 在这个 store 方法里面, 直接 throw 一个异常, 用一下 Nest 自带的 HttpException 这个异常。
给它一个字符串参数,没有权限!, 第二个参数是 HTTP 的状态码, 用一下 HttpStatus,里面的 FORBIDDEN , 它的值其实就是 403。
在客户端,用 POST 方法,请求一下 posts 这个地址, 这回从 Nest 应用那里得到的响应,状态码是 403 表示 Forbidden。
响应的数据里面有个 statusCode,值是 403,还有一个 message, 值是 没有权限 ,这些就是我们抛出的那个 HttpException 里的东西。
Nest 应用里还有一些异常,它们都继承了这个 HttpException ,比如这个异常可以换成 ForbiddenException ,给它提供一个信息,throw new ForbiddenException('没有权限!'); ,不需要再设置这个异常的 HTTP 状态码。
回到客户端,请求一下 posts , 得到的响应,状态码仍然是 403。响应的数据有 statusCode,message ,还有一个 error,这里面只有 message 的值是我们自己设置的。