koa2 + typescript

koa2+typescript 入门 一

前言: 学习玩具,遇到的问题仅做记录,如果恰好对你有帮助,不胜荣幸。

构建项目

koa init ( koa脚手架)

依赖

xxxx

1.koa-router

1.1 基本用法

router基本用法就是 : router.routes()

一种主要通过koa-router的api来实现的 ,

router.prefix( '/api')

这句话的意思 就是相对于router这个实例来讲, 添加一个全局前缀“/api” ps:这里有坑 这个“/” ,是一定要加的,不然访问不了 路径怎么都对不了

嵌套路由:
因为每个被声明的router实例,都是通过“koa-router”而构造出来的中间件,所以可以使用use方法,进行嵌套

代码示例:

import * as Router from "koa-router";
import Login from "./login/index";
import { Context, Next } from "koa";

const router = new Router();

router.prefix("/Geeker");

router.get("/", async (ctx: Context, next: Next) => {
  ctx.body = " index / !";
  await next();
});

router.use("/login", Login.routes()).use(Login.allowedMethods());

module.exports = router;
1.2 为路由添加jwt鉴权

概念: json web Token (百度)
koa里,权限主要依赖jsonwebtoken这个js库实现的 , 安装封装好的中间件,koa-jwt
ps:由于koa-jwt依赖了jsonwebtoken,所以安装了koa-jwt之后可以不用安装jsonwebtoken,可以直接
const jwt = require(‘jsonwebtoken’);

npm i koa-jwt 

鉴权方式很简单就。。。如下

const koajwt = require('koa-jwt');
app.use(koajwt({
    secret: 'zhangnan'
}).unless({
     path: [/\/register/, /\/login/, /\/unless/]
}));
1.3 利用ts特性 创建约束

基础知识: ts 函数声明及泛型函数

TypeScript中泛型及泛型函数、泛型类、泛型接口,泛型约束,一文读懂

ok, 看完这两个文章之后对ts里的interface 和 泛型有一个初步的概念,之后上代码
比如,先注册一个通用的返回约束

export interface Result {
  code: string;
  msg: string;
}

注册好了,有的接口需要一个data参数,盛放数据,但又不是所有接口都需要,诶,继承一下Result,同时加一个私有属性data

export interface ResultData<T = any> extends Result {
  data: T;
}

ok 这俩约束定义好了 , 搞个函数,按这俩货约束的方式返回

// 返回一个被约束的对象
const resultBody = function <T extends ResultData>(obj: T): T {
  return obj;
};

这段代码翻译一下: 声明一个resultBody函数 , 参数包括一个继承于ResultData的泛型 , 返回参数T
《吃饱了撑的函数》

1.4 好像不是很优雅,向koa实例上挂载一个code对象,统一状态码

资料来源:https://segmentfault.com/q/1010000015934061
百度了半天,没找到什么便于理解,设计的又比较nice的方式,sifou的一个回达可能还靠谱点。

2.连接mysql

之后再写吧

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值