在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:ts-restful开源软件地址:https://gitee.com/dog/ts-restful开源软件介绍:restful
快速使用
这个模块主要做那些事情
当我们使用 nodejs express开发web项目时,是否写了很多 路由和 controller 映射的代码?我们的路由规则是否是按照restful规范去实现的呢? ts-express-restful帮你去简化路由与controller映射的样板代码,如果按照restfu规范,你只需要关注资源提供方式,剩下的交给ts-express-restful. 当然如果你想自定义路由也很简单,只需要简单一句注解就好,感谢spring mvc 给了我很大的参考。 Router与Controller自动映射逻辑此处ctrl为controller类名 去掉 Controller后缀.如类名为 UserController, ctrl为 user;
主要函数\注解说明
使用tsconfig.json 中开启 emitDecorateMetadata
// router/index.ts import http = require("http");import {scannerControllers, registerControllerToRouter} from "ts-express-restful";import path = require("path");import express = require("express");var router = express.Router();scannerControllers(path.join(__dirname, 'controller'));//挂载到expressregisterControllerToRouter(router);export async function initHttp(app) { app.use('/api/v1', router);}//或者挂载到koa// import * as Router from 'koa-router';// var app = new Koa();// var route = new Router();//registerControllerToKoaRouter(router);// app.use(route.routes()); // controller/city.tsimport {AbstractController, Restful, Router} from "ts-express-restful";//此处可以是 @Restful('/test')@Restful()export class TestController extends AbstractController { constructor() { super(); } $isValidId(id: string) { //只有ID是数字是才认为是ID 如 /test/1 可以请求到get /test/xx 为返回404 /test/other 为映射到 other函数 return /^\d+$/.test(id); } // 调用地址为 /test/:id async get(@RequestParam id: number) { return { id } } // 调用地址为 /test/other @Router("/other") async other(@RequestParam other: string) { return { other, } }} service自动注入 @Service() export class TestService { sayHello() { return 'hello world'; } } @Restful export class TestController { @Autowire test: TestService; @GetMapping("/helloword") sayHello() { return this.test.sayHello(); } } @RequestBody @RequestBodyParam @QueryStringParam @HttpRequest @HttpRepsonse@Restful()export class TestController { @PostMapping("/test") async test(@RequestBody test: Test) { return test; } @GetMapping("/test2") async test2(@QueryStringParam keyword: string, @QueryString password: string) { return {keyword, password}; } @PostMapping("/test3") async test3(@HttpRequest req: Request) { let body = req.body; return body; } } 自动生成文档 swagger 文档默认挂在在 /swagger 路径下 changelog
|
请发表评论