背景
因为需要一个上传图片的接口,自己又不想为了一个接口专门去开一个后端项目来写,之前有接触过strapi,一直没去深入了解,趁这个机会就学学 strapi
strapi 是什么?
一句话总结:一个可以简单、快速、自动生成安全可靠后端 api 的框架,前端开发一大利器
概述
官网:strapi ,这个名字取自 bootstrap 的后缀 strap,然后因为它是一个提供快速生成安全可靠的 api 架构,然后再加了一个 i,合并就是 strapi,bootstrap 的有启动的意
使用
可以先跟着这篇博客简单做个 demo
——新手入坑:strapi官网教程的简单示例学习
具体api
数据库配置
strapi在默认下是安装了sqlite数据库,并且默认把数据放在.tmp/data.db中,并且被gitignore了
官方配置文档:Strapi Developer Docs
数据库的配置在config/database.js中,这里贴出mysql的配置文件
——需要在数据库中先创建数据库
——需要 mysql 的npm包,npm i mysql --save
1 | module.exports = ({ env }) => ({ |
重启服务后就会发现数据库中多了几张表

同时原先的数据也会消失,因为数据的引用关系已经从 sqlite的db文件转为本地数据库

http请求说明

关于通过ajax post/put relation数据的,根据设置一对多/一对一,字段的类型为number[]/number,填入对应数据的id即可
路由配置

- method 就是请求的方法
- path 请求的路径
- handler 请求用到的方法,在这里为relation.find,表示会用到在relation文件夹下的
controllers/{表名}.js中的find函数。但默认下find函数已经在系统中存在了,所以controllers/{表名}.js中没有find函数
上传图片
兜兜转转找了很久才发现,并不能直接通过 strapi 的一般方式上传图片,这里的一般方式指的是 (创建实体表——开放权限——发布——接口请求)
原因——strapi 不支持设置请求头(Content-type)为 multipart/form-data 后发起 POST 请求上传图片

可以看看这个 Issues :POST multipart/form-data on generated API for file upload · Issue #1316 · strapi/strapi · GitHub
解决办法:直接使用 strapi 的插件 upload模块
upload模块位置


配置请求头和body参数


成功获取到返回数据

项目会在 public/uploads 目录下转存图片,其实你通过 http://[ip]:[port]/upload 访问的图片就是这里的图片,项目本身只是提供了一层映射关系
参考
POST multipart/form-data on generated API for file upload · Issue #1316 · strapi/strapi · GitHub
