用Node+Typescript+Express书写post请求接收数据(接口)

准备JSON文件

在package.json同级下建

名为data的文件夹,里面建

你要的xxx.json文件和汇总的xxx.ts文件

  • 我建了posts.json,data.ts
  • json里是数组对象的形式
  • post后在原来基础上加,可以是空posts.json文件
  • 上传到服务器某个角落,目前没找到,
  • postman测试可以看到

data.ts代码

import posts from './posts.json'
export class DataStore{
static posts = posts;
}

server.ts里配置

  • apiCreatePost是进行了模块化api,后面会说,不急。

npm install body-parser

  • 因为post,收到undefined,用这个插件转化
  • 有时引入格式更新,在https://www.npmjs.com/
  • 搜索body-parser查找格式
    import express  from "express";
    import bodyParser from "body-parser";//这里
    import { apiCreatePost } from "./api/posts/apiCreatePost";
    const app = express()
    app.use(bodyParser.urlencoded({ extended: false })) //这里
    app.use(bodyParser.json()) //这里
    // routes
    app.get('/',(req,res,next)=>{
    res.send('nho,oooooo')
    })
    app.post('/posts',apiCreatePost)

    // 监听端口
    app.listen(process.env.PORT || 8091,()=>{
    console.log('Server started...')
    })

模块化api

在package.json同级下建

名为api的文件夹,里面建

  • 再建xxx的文件夹如(posts)将你命名的模块化函数名写xxx.ts文件
  • apiCreatePost部署到/post路由的数据函数
  • NewPost也是一个模块,提供一个数据传入的模板,后面讲,不急

npm install uuid

npm i @types/uuid -D

  • 自动生成id字符串,且独一无二
  • 有时引入格式更新,在https://www.npmjs.com/
  • 搜索uuid查找格式
    import {RequestHandler} from 'express';
    import { v4 as uuid } from 'uuid';
    import { DataStore } from '../../data/data';
    import { NewPost } from "../../interface/newPost";
    // uuid时string,类型
    export const apiCreatePost : RequestHandler = (req,res)=>{
    // console.log(req.body)
    const newPost:NewPost = {
    id: uuid(),
    userId : req.body.userId || 1,
    title: req.body.title,
    body: req.body.body,
    price: req.body.price,
    currency :req.body.currency
    };
    DataStore.posts.push(newPost);
    // res.send('数据添加成功')
    res.json(newPost)
    }

数据模板

在package.json同级下建

名为interface的文件夹,里面建

  • 建你命名的模块化函数名写xxx.ts文件
  • newPost.ts部署到/post路由的数据函数
  • 为什么是这样的格式
  • DataStore.posts.push(newPost);鼠标移入会有提示
    export interface NewPost{
    id:string,
    userId:number,
    title:string,
    body:string,
    price:number,
    currency:string
    }

postman

  • 转换成post
  • 点body
  • 点亮x-www-form-urlencoded红色
  • 根据你的key,value格式写
  • 点Send

以上是我的学习笔记~