当前位置: 首页 > news >正文

网站等级保护如何做ui设计到底能不能学

网站等级保护如何做,ui设计到底能不能学,平台建设费用包括哪些,wordpress 自定义选项页面nest.js学习笔记(一)一、安装nest.js前置条件运行项目目录介绍二、nest.js cli 常用命令三、RESTful 风格设计1.接口url2.RESTful 版本控制四、获取前端传过来的参数1.获取Get请求参数2.获取Post请求参数3.动态路由4.获取Header信息5.自定义状态码nest.j…

nest.js学习笔记(一)

    • 一、安装nest.js
      • 前置条件
      • 运行项目
      • 目录介绍
    • 二、nest.js cli 常用命令
    • 三、RESTful 风格设计
      • 1.接口url
      • 2.RESTful 版本控制
    • 四、获取前端传过来的参数
      • 1.获取Get请求参数
      • 2.获取Post请求参数
      • 3.动态路由
      • 4.获取Header信息
      • 5.自定义状态码

nest.js 英文官网 NestJS - A progressive Node.js framework

nest.js 中文网 NestJS 简介 | NestJS 中文文档 | NestJS 中文网

nest.js 中文网2 Nest.js 中文文档

一、安装nest.js

前置条件

请确保您的操作系统上安装了 Node.js(>= 12, v13 版本除外)

安装完成node之后可以运行下面的npm安装命令来全局安装Nest CLI

// 全局安装nestjs脚手架
npm i -g @nestjs/cli// 创建新项目
nest new project-name

运行项目

下边几个为运行/打包命令,如果需要热更新 启动npm run start:dev 如不需要,运行npm run start即可

	"start": "nest start","start:dev": "nest start --watch","start:debug": "nest start --debug --watch","start:prod": "node dist/main",

ps:如果感觉start:dev有些长,也可以直接改为dev,后面运行npm run dev就可以了

目录介绍

核心文件简要概述

app.controller.ts带有单个路由的基本控制器示例。
app.controller.spec.ts对于基本控制器的单元测试样例
app.module.ts应用程序的根模块。
app.service.ts带有单个方法的基本服务
main.ts应用程序入口文件。它使用 NestFactory 用来创建 Nest 应用实例。

核心文件介绍

  1. main.ts 入口文件主文件 类似于vue 的main.ts

通过 NestFactory.create(AppModule) 创建一个app 就是类似于绑定一个根组件App.vue

app.listen(3000); 监听一个端口

  1. Controller.ts 控制器

可以理解成vue 的路由 private readonly appService: AppService 这一行代码就是依赖注入不需要实例化 appService 它内部会自己实例化的我们主需要放上去就可以了

  1. app.service.ts

这个文件主要实现业务逻辑的 当然Controller可以实现逻辑,但是就是单一的无法复用,放到app.service有别的模块也需要就可以实现复用

二、nest.js cli 常用命令

查看所有命令:

nest --help // 可以查看nestjs所有的命令

在这里插入图片描述

以上命令可以根据需要,自动生成对应的文件,如感觉一个个生成的太慢,可以直接使用一个命令生成整套CURD

nest g resource study // resource可以全写,也可以使用res简写

在这里插入图片描述

此处一般选用第一项就可以,如果是第一次使用这个命令,除了生成文件之外还会自动使用 npm 帮我们更新资源,安装一些额外的插件,后续再次使用就不会更新了。

在这里插入图片描述

如图所示,一套标准的CURD模板就生成好了此处我更改了端口号,默认端口号为3000

在这里插入图片描述

三、RESTful 风格设计

RESTFUL 是一种网络应用程序的设计风格和开发方式,基于HTTP,可以使用XML格式定义或JSON格式定义。RESTFUL适用于移动互联网厂商作为业务接口的场景,实现第三方OTT调用移动网络资源的功能,动作类型为新增、变更、删除所调用资源。

1.接口url

  • 传统接口

    • 利用?来拼接到URL地址进行数据参数传输,且不支持Post方式,Post方式需要在请求体中携带参数
    http://localhost:8080/api/get_list?id=1
    http://localhost:8080/api/delete_list?id=1
    http://localhost:8080/api/update_list?id=1
    
  • RESTful 接口

    • 利用/来拼接到URL地址进行数据传输,一个接口就会完成 增删改差 他是通过不同的请求方式来区分的
    // 查询GET 提交POST 更新 PUT PATCH 删除 DELETE
    http://localhost:8080/api/get_list/1 
    

2.RESTful 版本控制

版本备注
URI Versioning版本将在请求的 URI 中传递(默认)
Header Versioning自定义请求标头将指定版本
Media Type Versioning请求的Accept标头将指定版本
  1. 在main.ts文件中开启版本控制

在这里插入图片描述

  1. 在study.controller 配置版本(共两种方式,如果在Controller 内配置,则页面内所有的请求路径都必须加上版本,如果单独配置则仅需要在单独配置的路径加上版本即可)

在这里插入图片描述

在这里插入图片描述

四、获取前端传过来的参数

nest.js提供了许多的方法参数装饰器 用来帮助我们快速获取参数 常用的装饰器如下

方法参数
@Request()/@Req()req
@Response()/@Res()res
@Next()next
@Session()req.session
@Param(key?: string)req.params/req.params[key]
@Body(key?: string)req.body/req.body[key]
@Query(key?: string)req.query/req.query[key]
@Headers(name?: string)req.headers/req.headers[name]
@HttpCode()

1.获取Get请求参数

  • 使用@Request()装饰器来获取到前端传过来的参数,同理,使用@Req()也是一样的效果,这里我就不演示了,下图中打印的req为整个Request的内容,通过req.query获取到对应的参数ps:装饰器后边跟的参数(req)可以随便写

在这里插入图片描述

  • 因为获取到的参数在Request中的query中存放,也可以直接使用 @Query()来获取,此时效果是一样的,就不需要再通过req.query获取参数了

在这里插入图片描述

import { Controller, Get, Request,Query } from '@nestjs/common';
import { StudyService } from './study.service';// @Controller({
//   path: 'study',
//   version: '1',
// })
@Controller('study')
export class StudyController {constructor(private readonly studyService: StudyService) {}// @Get()// getParams(@Request() req) {//   console.log(req);//   return {//     data: req.query,//     status: 200,//   };// }@Get()getParams(@Query() query) {console.log(query);return {data: query,status: 200,};}
}

2.获取Post请求参数

  • Post请求与上边Get请求类似,不同的是传的值存放在body中,而不是query中,需要利用res.body草可以获取到值

在这里插入图片描述

  • 和@Query()修饰器一样,可以利用@Body()修饰器来直接获取到参数,结果也是一样的,除此之外,@Body()修饰器也支持直接读取key

在这里插入图片描述

import { Body, Controller, Post } from '@nestjs/common';
import { StudyService } from './study.service';// @Controller({
//   path: 'study',
//   version: '1',
// })
@Controller('study')
export class StudyController {constructor(private readonly studyService: StudyService) {}// @Post()// getPost(@Request() req) {//   console.log(req.body);//   return {//     data: req.body,//     status: 200,//   };// }@Post()getPost(@Body('name') body) {console.log(body);return {data: body,status: 200,};}
}

3.动态路由

  • 此处和上面@Request() 用法一样,就不赘述了,直接上结果

在这里插入图片描述

import { Controller, Get, Param } from '@nestjs/common';
import { StudyService } from './study.service';// @Controller({
//   path: 'study',
//   version: '1',
// })
@Controller('study')
export class StudyController {constructor(private readonly studyService: StudyService) {}@Get(':id')getParams(@Param() params) {console.log(params);return {data: params,status: 200,};}
}

4.获取Header信息

此处我拿动态路由来举例子,无论get请求还是post,都可以获取到Header信息

在这里插入图片描述

import { Controller, Get, Headers } from '@nestjs/common';
import { StudyService } from './study.service';// @Controller({
//   path: 'study',
//   version: '1',
// })
@Controller('study')
export class StudyController {constructor(private readonly studyService: StudyService) {}@Get(':id')getParams(@Headers() headers) {console.log(headers);return {data: headers,status: 200,};}
}

5.自定义状态码

  • 在@HttpCode()中直接写数字就可以,但也不能写的特别离谱的数字(建议按照标准状态码来写),否则看不到返回的参数

在这里插入图片描述

常见Code码规范

状态码代表的意思
200OK 连接成功
304Not Modified 协商缓存了
400Bad Request 参数错误
401Unauthorized token错误
403Forbidden referer origin 验证失败
404Not Found 接口不存在
500Internal Server Error 服务端错误
502Bad Gateway 上游接口有问题或者服务器问题
http://www.yayakq.cn/news/728871/

相关文章:

  • 网站禁止ip访问爱论网
  • 未满18岁能申请网站备案吗外贸网站免费建设
  • 营销型网站分为哪几种网站优化标题不超过多少个字符
  • 做网站运营经理的要求怎么介绍网站的优缺点
  • 网页设计网站模板素材创意广告设计培训
  • 黑山网站建设做电影网站需要注意什么东西
  • 网站运营 解决方案营销管理咨询
  • 免费制作logo的网站小程序代码怎么获取
  • 公司管理系统是系统软件吗网站优化与seo的区别
  • 台州网站建设优化重庆建设工程信息查询
  • it网站建设方案wordpress固定衔接出错
  • 百度加速乐wordpressseo网站是什么
  • 提供秦皇岛网站建设价格唐山网站建设冀icp备
  • 自贡住房和城乡建设厅网站wordpress客户端插件下载
  • 直播网站建设方案忘记了wordpress登录密码
  • 如何解决网站只收录首页的一些办法俄乌今天最新军事动态
  • 惠州seo网站管理西安做网站优化公司报价
  • 网站公司排行榜前十名网站开发制作软件
  • 做pvc卡片的交流网站网络游戏排行榜前十手游
  • 网站流量对比东莞网站建设 乐云践新
  • 深圳网站设计教程福田欧曼价格
  • 英文网站建设用哪种字体人与狗做的电影网站
  • 廊坊微信网站建设做带v头像的网站
  • 成都网站排名优化武威市市建设局网站建筑业管理
  • 访问不了网站目录中的网页网站建设价格是哪些方面决定的
  • 网站开发 问题 关键技术能用的手机网站
  • 网站备案需要具备什么条件seo培训班 有用吗
  • 国内人做韩国网站一般都卖什么手续上海崇明林业建设有限公司 网站
  • 长春网站建设网网站建设术语名词
  • 个人网站建设方案模板小红书推广网站