认识controller
controller是带有单个路由的基本控制器, 负责处理传入请求并将响应返回给客户端。
控制器的目的是接收应用程序的特定请求。路由机制控制哪个控制器接收哪些请求。通常,每个控制器都有多个路由,不同的路由可以执行不同的操作。
为了创建一个基本的控制器,我们使用类和装饰器。装饰器将类与所需的元数据相关联,并使 Nest 能够创建路由映射(将请求绑定到相应的控制器)。
首先让我们来利用nest g co 'xxx'命令来创建一个基本控制器,创建的controller在src下面指定的文件夹中
我们可以看到他是用了一个controller装饰器来指定创建的类是一个控制器,而路由地址就是装饰器中内容。
学习基本请求方式
在正常项目中,逻辑代码是写在service中,controller通过不同的请求方式来进行调用,作为初学,我们大可写在controller中,让我们为控制器中加上一些基本的请求吧
常用的get post patch delete几种请求方式,在nest.js中都已经为我们内置好了,只需要在@nest/common引入相应的装饰器即可,我们可以看出,每个请求函数都为其定制好了请求方式
用apiFox测试一下
get请求
我们也可以获取某一用户数据 设置动态路由即可
其指定了parma装饰器,能够获取parmas参数
另外我们也可以指定二级路由
post请求 我们为其指定了body装饰器,能够获取请求体中的东西
patch请求,用于更新数据 为其指定了parma装饰器,能够获取parmas参数
我们也可以指定装饰器的参数
常见的请求就以上这些了
下面是关于http状态码的一些注意事项
我们可以用@HttpCode这个装饰器 以及HttpStatus指定状态码
正常post成功后返回201,而我们指定了ok就是200了
另外我们还可以用nest底层所依赖的express来指定状态码
虽然这种方法也可以,并且灵活,但是在头操作,库特定功能的时候要小心使用,缺点在于,失去了依赖于nest标准响应式处理的nest功能兼容性 比如拦截器(nest后面的知识)和 HttpCode这样的装饰器 当操作底层代码时,会更依赖于平台,不同的库在响应对象的操作api可能不同 并且我们在使用时还需要模拟对应的响应对象 所以在处理响应时优先选择nest的标准方法