strapi系列--如何建表并在原有官方自动生成的api基础上扩展接口,定制化自己的业务逻辑

news2024/12/22 20:33:27

为什么要进行后端定制呢?

在实际开发过程中,项目中有些需求需要我们定制化自己的业务逻辑,那么我们该如何处理这个需求呢?本文以图文并茂的形式,基于原有官方自动生成的api,定制一个我们自己的业务逻辑接口。

Strapi后端的每个部分都可以定制:

  • Strapi服务器收到的请求
  • 处理请求并触发控制器处理程序执行的路由
  • 可以阻止访问路由的策略
  • 中间件可以在向前移动之前控制请求流和请求
  • 一旦到达路由就执行代码的控制器
  • 用于构建控制器可重用的自定义逻辑的服务
  • 模型是内容数据结构的表示
  • 发送给应用程序的响应

快速上手

如果想要了解更多,请访问我的这篇文章图文并茂strapi 4.5.5自定义搭建指南以及数据库字段名接口返回mapping分析,详细讲解了每个步骤的含义,以及创建流程

建表

我们先在前端界面创建

  • 表名:termsInfo
  • 字段名:contentInfo


保存创建内容,接口测试

我们存储几条数据,然后配置接口进行访问测试,接下来我们进行接口测试

我们先创建一条数据


然后我们配置接口权限



保存,然后访问我们配置的接口

测试成功

API: http://localhost:1337/api/terms-infos


此时此刻,我们可以观察一下项目中的文件创建情况,框架已经帮助我们自动创建了下面的文件,我们接下来基于这几个文件进行自定义扩展接口

扩展接口

官方文档在此

添加自定义接口代码

src/api/terms-info/controllers/terms-info.js

'use strict';

/**
 * terms-info controller
 */

const { createCoreController } = require('@strapi/strapi').factories;

module.exports = createCoreController('api::terms-info.terms-info',({ strapi }) =>  ({
    async hello(ctx) {
      try {
        ctx.body = 'happy every day ~';
      } catch (err) {
        ctx.body = err;
      }
    },
    async find(ctx) {
      ctx.query = { ...ctx.query, local: 'en' }
      const { data, meta } = await super.find(ctx);
      meta.date = Date.now()
      return { data, meta };
    },
   
  }))

配置路由(接口访问地址)

有两种配置路由的方式,我们可以自由选择哦~

第一种,单独创建单个路由的js文件来配置 src/api/terms-info/routes/hello.js



module.exports = {
    routes: [
      {
        method: 'GET',
        path: '/hello-test02',
        handler: 'terms-info.hello',
      }
    ]
  }

第二种,我们使用官方文档里的另一种方式,在下面的示例中,自定义路由文件名的前缀为01-,以确保路由到达核心路由之前。

创建文件:src/api/terms-info/routes/01-terms-info.js


module.exports = {
    routes: [
      { 
        method: 'GET',
        path: '/hello-test01',
        handler: 'terms-info.hello',
      }
    ]
  }

配置接口权限

接口测试

我困了哦,今天就写到这里啦~

  • 小伙伴们,( ̄ω ̄( ̄ω ̄〃 ( ̄ω ̄〃)ゝ我们明天再见啦~~
  • 大家要天天开心哦

欢迎大家指出文章需要改正之处~
学无止境,合作共赢

在这里插入图片描述

欢迎路过的小哥哥小姐姐们提出更好的意见哇~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/681698.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

“破解求职之谜:应届生如何应对职场场景挑战?

今天,我想与你分享一个关于应届生面试的故事。这是一个真实且令人深思的故事,也是我个人在求职过程中的一次经历,这也是对尚未面试者的警醒对已面试者的勉励。 在暑期还未开始之前,我充满着憧憬和期待地投递了许多简历&#xff0c…

chatgpt赋能python:Python第几行是什么?了解Python中的行号

Python第几行是什么?了解Python中的行号 如果你是一名Python工程师,你肯定曾经遇到过错误提示中提到的Python第几行。那么Python中的行号是什么?本文将为您解答关于Python中行号的一些基本问题。 什么是Python中的行号? 在Pyth…

测试用例设计方法

等价类划分法 设计测试用例步骤 需求分析划分等价类:有效和无效设计用例 无效有5种情况 规则(需求本身)长度类型是否为空(必填项)是否重复 案例1:QQ号6-10位自然数 划分等价类 有效等价类有效数据无…

深入理解深度学习——BERT派生模型:BART(Bidirectional and Auto-Regressive Transformers)

分类目录:《深入理解深度学习》总目录 UniLM和XLNet都尝试在一定程度上融合BERT的双向编码思想,以及GPT的单向编码思想,同时兼具自编码的语义理解能力和自回归的文本生成能力。由脸书公司提出的BART(Bidirectional and Auto-Regre…

[Hadoop] 期末答辩问题准备

0.相关概念 1.什么是NameNode? NameNode是整个文件系统的管理节点,它维护着整个文件系统的文件目录树,文件/目录的元信息和每个文件对应的数据块列表。并接收用户的操作请求。 2.SecondaryNameNode的主要作用? SecondaryNameN…

JUC阻塞队列BlockingQueue---ArrayBlockingQueue

JUC阻塞队列BlockingQueue---ArrayBlockingQueue ArrayBlockingQueue示例代码原理构造方法内部常量入队put方法出队take方法 什么是阻塞队列? ArrayBlockingQueue ArrayBlockingQueue是典型的有界阻塞队列,其内部是用数组存储元素的,初始化…

chatgpt赋能python:Python程序安装指南

Python程序安装指南 介绍 Python 是一种高级编程语言,广泛应用于数据分析、人工智能、Web开发等领域。安装 Python 程序是使用 Python 和运行 Python 脚本的必要步骤。在本文中,我们将提供详细的 Python 程序安装指南。 安装Python程序步骤 步骤1: 下…

1.1-python课程简介

一、python入门 1、python来源2、什么是python3、python编程软件下载4、python软件安装5、python软件运行和调试 1、python来源 Guido van Rossum 于1989年在荷兰国家数学和计算机科学研究所设计出来的。 2、什么是python Python 是一个高层次的结合了解释性、编译性、互动性…

【推荐】win 安装 rust 1.70 (GNU)

目录 一、下载二、安装三、配置环境变量四、检查是否安装成功五、参考文章 一、下载 官网地址:https://www.rust-lang.org/zh-CN/ https://forge.rust-lang.org/infra/other-installation-methods.html 历史版本下载地址: 二、安装 注意:安…

TypeScript ~ TS Webpack构建工具 ⑦

作者 : SYFStrive 博客首页 : HomePage 📜: TypeScript ~ TS 📌:个人社区(欢迎大佬们加入) 👉:社区链接🔗 📌:觉得文章不错可以点点关注 &…

chatgpt赋能python:Python相加:实现快速、高效的计算

Python相加: 实现快速、高效的计算 Python 运用广泛,是一种功能强大的编程语言。它不仅易于学习,而且具备许多强大的功能,其中包括 Python 相加。今天,我们将介绍如何写 Python 相加的代码,以及如何实现快…

chatgpt赋能python:如何将Python程序打包成App-一个详细的指南

如何将Python程序打包成App - 一个详细的指南 如果你是一位有着丰富Python编程经验的开发者,可能你听说过Python App打包。Python App打包就是将Python程序打包成为操作系统所支持的应用程序的过程。这个过程可以让你的Python程序在Windows、Mac和Linux操作系统上更…

Linux网络、进程

一、网络环境配置 第一种方法:自动获取 登陆后,通过界面来设置自动获取IP,特点:linux启动后会自动获取IP,缺点是每次自动获取的IP地址可能不一样。这种就不适合服务器使用 第二种方法:指定IP 直接修改配置…

【Leetcode60天带刷】day24 回溯算法—— 77. 组合

​ 理论基础: 什么是回溯法? 回溯法也可以叫做回溯搜索法,它是一种搜索的方式。 回溯法解决的问题 回溯法,一般可以解决如下几种问题: 组合问题:N个数里面按一定规则找出k个数的集合切割问题&#xff…

chatgpt赋能python:Python程序如何打包成安装包

Python程序如何打包成安装包 Python是一种受欢迎的编程语言,许多开发者使用它构建各种类型的应用程序。然而,当需要分发Python应用程序时,将所有代码和依赖项打包成新的安装包通常是最佳选择。本文将介绍如何使用Python打包工具将Python程序…

Java并发工具Fork/Join原理

我们一直讲,并发编程可以分为三个层面的问题,分别是分工、协作和互斥,当你关注于任务的时候,你会发现你的视角已经从并发编程的细节中跳出来了,你应用的更多的是现实世界的思维模式,类比的往往是现实世界里…

Golang每日一练(leetDay0107) 去除重复字母、最大单词长度乘积

目录 316. 去除重复字母 Remove Duplicate Letters 🌟🌟 318. 最大单词长度乘积 Maximum-product-of-word-lengths 🌟🌟 🌟 每日一练刷题专栏 🌟 Rust每日一练 专栏 Golang每日一练 专栏 Python每日…

【Less】四则运算

Less四则运算特点 对于两个不同单位值之间的运算,不要求你进行运算操作的几个值必须带单位,只要其中有一个有单位就可以了,运算结果的值会优先取第一个值的单位为准。如: 2030px-10em编译成40px。border:10em; border:(border2px)…

数据挖掘——宁县(区、市)农村居民人均可支配收入影响因子分析(论文)

《数据挖掘与分析》课程论文 题目:宁县(区、市)农村居民人均可支配收入影响因子分析 xx学院xx班:xxx 2022年6月 摘要:农村居民人均可支配收入可能被农作物产量、牲畜存栏、农作物播种数量等诸多因素影响。为此&#…

JavaSE基础语法--封装

Java是一门面向对象的语言。面向对象的三大特性:封装,继承,多态。封装到底是什么含义呢?通俗来讲就是屏蔽掉类的实现细节,对外提供接口让你调用。举个现实生活中的例子: 刚好618刚过,我因为需求…