精华内容
下载资源
问答
  • 这半个月断断续续在学习用PHP的ThinkPHP框架开发后端API。现在总结记录一下开发一个接口需要做好哪些事,以此提高开发效率,并且也有不错的扩展性。 一、流程概要 基本是这么一个流程,略过环境搭建: 整理清楚有...

    这半个月断断续续在学习用PHP的ThinkPHP框架开发后端API。现在总结记录一下开发一个接口需要做好哪些事,以此提高开发效率,并且也有不错的扩展性。


    一、流程概要

    基本是这么一个流程,略过环境搭建:

    1. 整理清楚有哪些接口
    2. 设计数据表
      • 初步梳理是一对一,一对多,还是多对多
    3. 编写验证器
    4. 编写全局异常类(AOP思想)
    5. 定义路由路径
    6. 建立控制器类
    7. 建立模型类
      • 用ORM,所以建立和数据表对应的模型类
    8. 控制器调用模型,模型调用数据库,完成接口编写

    二、具体说明

    梳理好有哪些接口后,就开始设计数据表:

    数据表会随着代码的编写做些调整和改变。

    值得注意的一点,当有两张表之间的关系是多对多时,记得设计一张中间表存放两张表各自的id。

    设计好数据表后,开始编写一些工具类,有助于提高编写业务代码时的效率。

    首先是验证器(validate)。

    TP5框架自带验证器类,我们要做的则是继承这个验证器类,然后根据具体的接口做扩展即可。

    创建一个验证器基类,把通用的方法放在里面:

    goCheck()方法是所有具体验证器都会调用的方法,各个具体验证器只是会重写一些验证规则和验证返回信息而已。

    在goCheck()方法里,实例化了Request类。这样做的目的是获取API被调用时,调用方传递的参数。获取到参数后,自然就是对这些参数进行验证了。check()方法会调用各个具体验证器里设置的验证规则函数进行检测。

    然后是全局异常类(global exception)。

    同样的,TP5框架自带了一个异常类,我们就创建一个异常基类继承它。

    随后需要做的则是根据具体的接口重写HTTP状态码,错误消息和错误码即可。

    至于错误码的定义,则是自己设计一套规范。

    搭建好验证器和全局异常类后,我们只需要在每个接口的函数里面调用他们就行了:

    好,至此一些基础的东西就搭建好了,下面开始编写接口代码。

    首先定义路由路径:

    在route.php里,引入Route类,定义路径即可。路径里的变量用:号+变量名表示,路径里的变量由路径末尾指定的函数接收,这个函数定义在控制器相对应的类里面。

    比如id这个变量:

    如上图,在控制器里,当拿到调用方通过路由路径传过来的参数后,我们就调用模型,把参数传过去,模型处理具体的数据库调用。

    这里也是一个需要注意的点,控制器尽量只做连接的事情,不做具体的操作。

    然后,在建立了控制器后,顺理成章,也需要建立对应的模型。

    TP5同样自带了Model类,然后我们也定义自己的模型基类,当然也是继承TP5的模型类:

    模型基类自然也是定义较为通用的方法。比如上图的例子里,定义了一个返回图片前缀链接的方法,不同的接口但又跟图片调用有关的话,就会用到这个方法来拼接图片URL。

    这里也有个注意的点。当我们需要创建全局的变量时,可以在application目录下创建extra目录文件,然后创建setting.php文件,在里面返回一个关联数组即可:

    随后的调用如上图模型基类里的prefixImgUrl方法里展示的一样,config函数,参数传入文件名加关联数组的key值,这样就可以获取到了:

    回到模型上来,每个接口会有自己的模型类,这个模型类对应一张数据表,比如:

    Banner模型类由于是通过模型基类继承了TP5的Model类,我们需要做的就是重写一些属性,来适应这个具体的接口,比如重写$hidden属性,定义这个接口返回的哪些字段我们是要隐藏的。

    然后则是ORM的重点之一,调用数据表所对应的模型类。比如items方法里,通过hasMany()这个方法确定了Banner模型和BannerItem模型的关系。然后在getBannerById()方法里,调用了ORM用来操作数据的方法,这是对原生操作数据库语句的封装,然后ORM会返回模型对象,这个对象除了带有数据库数据外,还会带有一些属性和方法,用来操作数据。这是ORM对比原生SQL语句的一个优势。

    最后,控制器调用模型的getBannerById()方法,获取到了数据,再作为接口的返回值传递给接口调用者。这样就完成了一次接口的编写。

    三、总结

    至此做了一个简要的后端API开发流程记录。其中还有很多细节没有提到,只是简略的描述了一个过程,不过这也不是这次记录的主要目的。这次的目的还是对这一周多学习的一个记录。

    通过这次学习后端API开发,更加巩固了我对面向对象编程里思想的理解和运用。

    通过继承和重写,可以把代码写得更干净简洁。

    类,实例,属性,方法,怎么看待他们,然后操作他们,通过这次学习又加深了很多认识。

    展开全文
  • beego框架是比较优秀的golang后端框架,由于最近项目需要做一个后端服务,所以选择了beego,参考了不少网上资料。 参考资料:https://beego.me/docs/intro/ 安装beego beego安装还是挺简单的,直接github下载源码...

    beego框架是比较优秀的golang后端框架,由于最近项目需要做一个后端服务,所以选择了beego,参考了不少网上资料。

    参考资料:https://beego.me/docs/intro/

    安装beego

    beego安装还是挺简单的,直接github下载源码或者go get都可以。

    beego源码github:https://github.com/astaxie/beego

    beego官网:https://beego.me/

    一般来说,类似MVC模式,beego项目有如下结构

    ├── conf
    │   └── app.conf
    ├── controllers
    │   ├── admin
    │   └── default.go
    ├── main.go
    ├── models
    │   └── models.go
    ├── static
    │   ├── css
    │   ├── ico
    │   ├── img
    │   └── js
    └── views
        ├── admin
        └── index.tpl

     功能逻辑如下 

    一目了然。

    安装bee

    bee是beego的一个项目管理工具,使用go get安装

    go get github.com/beego/bee

    然后配置路径文件,mac下打开终端运行

    atom ~/.bash_profile

    最后加入下面两行:

    export GOPATH=${HOME}/go
    export PATH=${PATH}:${GOPATH}/bin
    

     再在终端输入:

    source ~/.bash_profile

    这样子bee安装就完成了。

    终端输入bee,看到以下信息:

    ok,使用bee new命令试一试。终端输入:

    打开gopath下的src,看到有个test文件夹,目录信息如下:

    跟上面的结构一致,试试run它吧

    运行beego项目

    我们在controllers文件夹下新建一个hello.go,它的代码如下:

    package controllers
    
    import (
    	"github.com/astaxie/beego"
    )
    
    type HelloController struct {
    	beego.Controller
    }
    
    func (c *HelloController) Get() {
    	c.Ctx.WriteString("hello world!\n" + "this is test beego!")
    }
    

    再在routers的router.go里面添加代码:

    beego.Router("/hello", &controllers.HelloController{})

    这样子localhost:8080/hello这个地址就定向到了HelloController的内容去了。

    终端输入:

    go run main.go

     打印如下信息:

    浏览器打开localhost:8080端口: 

     切换到localhost:8080/hello: 

    至此,mac上的一个beego环境就搭建完毕。

    展开全文
  • 使用Beego框架开发后端-2.前后端交互

    千次阅读 2019-04-17 21:26:29
    搭建完beego框架后,我们开始写自己的应用和需求。 目前要做的需求是预约功能,注册功能,日历功能。 创建新功能 第一步,在controllers文件夹里面新建三个功能的go程序 初始代码就直接复制default.go,改一下...

    搭建完beego框架后,我们开始写自己的应用和需求。

    目前要做的需求是预约功能,注册功能,日历功能。

    创建新功能

    第一步,在controllers文件夹里面新建三个功能的go程序

    初始代码就直接复制default.go,改一下名字就好

    router.go添加三个功能对应页面的路由:

    package routers
    
    import (
    	"github.com/astaxie/beego"
    	"webBack/controllers"
    )
    
    func init() {
    	beego.Router("/", &controllers.MainController{})
    	beego.Router("/book", &controllers.BookController{})
    	beego.Router("/calendar", &controllers.CalendarController{})
    	beego.Router("/register", &controllers.RegisterController{})
    }

    新建utils文件夹,放入功能函数的代码

    views建立三个功能的前端页面

    好了,现在localhost:8080/book就对应着book.tpl和它的功能了,另外的两个也是类似。

    数据交互

    以book为例,我们做一个预约的简易前端book.tpl

    boot.tpl中有如下表单,在下面这个表单中,定义了一些变量

    <form name="book" onsubmit="return CheckPost();">
            手机号:<input name="phone" type="text" />
            时间:<input name="time" type="text" />
            房间:<input name="room" type="text" />
            <input type="submit" value="提交"/>
          </form>

    我们同样在models里面的model.go定义如下结构体,beego能够直接根据表单元素的名字获取值

    type Book struct {
    	Phone string `form:"phone"`
    	Time  string `form:"time"`
    	Room  string `form:"room"`
    }

    controllers里的book.go进行数据处理,记得submit默认是Get()方法,那我们重写Get()方法:

    func (c *BookController) Get() {
    	c.TplName = "book.tpl"
    	bookInfo := models.Book{}
    	if err := c.ParseForm(&bookInfo); err != nil {
    		panic(err) //handle error
    	}
    	if len(bookInfo.Phone) == 11 && bookInfo.Time != "" && bookInfo.Room != ""{
    		fmt.Println(bookInfo.Phone + " " + bookInfo.Time + " " + bookInfo.Room)
    		utils.GenerateKey(bookInfo.Phone, bookInfo.Time, bookInfo.Room)
    		utils.GenerateData(bookInfo.Phone, bookInfo.Time, bookInfo.Room)
    		utils.GenerateQR(bookInfo.Phone)
    		c.Post()
    	}
    }

    记得检查数据是否合法

    这样子,一个简易的前后端交互就完成了。

    测试

    打开localhost:8080/book,转到book.tpl界面,有如下表单,填写信息:

    点击提交,控制台打印如下信息,可以看到已经收到前面传来的信息

    那就继续执行几个功能可以看到主要文件也已经生成

    ECC加密后的串,密钥串,以及二维码等

    这样,基本的前后端交互就完成了。

    展开全文
  • spring boot框架是用来进行快速开发框架,使用java语言进行开发,spring boot具有以下的几个优点: 1.创建独立的Spring应用程序 2.嵌入的Tomcat,无需部署WAR文件 3.简化Maven配置 4.自动配置Spring 5.提供生产...

    spring boot框架是用来进行快速开发的框架,使用java语言进行开发,spring boot具有以下的几个优点:
    1.创建独立的Spring应用程序
    2.嵌入的Tomcat,无需部署WAR文件
    3.简化Maven配置
    4.自动配置Spring
    5.提供生产就绪型功能,如指标,健康检查和外部配置
    6.开箱即用,没有代码生成,也无需XML配置
    首先使用spring boot 框架进行快速的开发一个后台应用:
    环境要求:IDEA2020.1.x64,spring boot 2.3,JAVA 8, JDK 8
    我们可以进行spring boot的官网进行相关文档的查询:
    官网地址:https://start.spring.io/
    在这里插入图片描述可以进行官网平台进行在线的使用本项目历程中所使用的是本地的服务器(主机),下面进入正式的环节:
    1.新建spring boot框架的项目模板;
    在这里插入图片描述选择spring initial project SDK使用1.8版本,spring boot 为2.3.6的,(要进行版本的匹配),选择好进行下一步;点击“next”
    java version 选择“8”,需要进行版本的匹配,否则会出现报错。
    在这里插入图片描述点击next后,选择文件与工程的类型“web”,新的版本的IDE显示的是“spring web”
    在这里插入图片描述选择如以上所示的配置页面后,点击“next”,此时spring boot的新工程已经建立完毕:如下图所示:
    在这里插入图片描述下面开始添加后端代码的运行文件,文件名为“HelloWorldController.java”
    在这里插入图片描述在文件中写入以下的代码:

    package com.example.demo;
    
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    
    public class HelloWorldController {
    
        @RequestMapping(value  = "/hi")
        public String HelloWorld(){
            return "Hello world";
        }
    
    }
    

    点击运行启动则主机作为服务器开始进行后台程序的运行:
    在这里插入图片描述此时表示后台服务进行运行,可以进行IP端口进行访问测试;
    打开浏览器在IP地址栏输入:

    http://localhost:8080/hi
    

    出现如上的效果则代表使用结束:
    在这里插入图片描述以上就是全部的项目的实现过程,有兴趣的可以试试将代码放在服务器上进行运行,使用服务器的IP地址和端口号进行访问,就是一个最小的后台程序了。

    参考文献:
    1.https://segmentfault.com/a/1190000016440629
    2.https://blog.csdn.net/wuweiwei001/article/details/78770546

    展开全文
  • 什么是框架(包括前端框架后端框架) 什么是框架 框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种定义认为,框架是可被应用开发者定制的应用骨架。前者是从应用...
  • 什么是前端框架后端框架

    万次阅读 2017-05-22 10:11:40
    什么是框架框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种定义认为,框架是可被应用开发者定制的应用骨架。
  • Web开发后端框架比较

    2021-04-15 17:54:42
    看了几篇帖子,收藏一下。 https://www.simcf.cc/8070.html https://www.bilibili.com/read/cv8465810/ ... ... 2020年10个最佳Web开发后端框架 https://www.365blogs.com/hlwzt/1601.htm...
  • 前端采用vue.js框架,后端采用springboot+mybatis框架开发的一套酒店管理系统,附带mysql脚本,酒店管理系统前端和后端分离部署,便于维护,提高工作效率
  • Java后端开发框架

    万次阅读 多人点赞 2019-09-09 15:31:22
    Java web开发框架了解 ...后端–对外提供(类)RESTful风格的API—数据库交互-- web应用服务器(tomcat)-- Spring 技术栈开发 交互–HTTP协议通信-- JSON格式–RESTful 风格 java web开发框架的变迁 ...
  • 要做一个好的开发框架并不是直接找一个现成的Spring就ok了,这个对于一般新手来说学习难度还是有点高。另外Spring还是一个通用性的框架,我们需要针对业务的定制化封装。我以java为例讲解一下后端需要做什么: ...
  • 后端开发框架

    万次阅读 2017-10-22 03:35:32
    Python目前主流的应用包括:Web开发、图形界面开发、系统网络运维、网络编程、科学数字计算、3D游戏开发等。 Python的web框架很多很多,百花齐放。 个人接触最多的是这四个大佬:Django、Flask、Tornado、Aiohttp...
  • 后端框架选择:选择熟悉或者算法编程语言相应的框架、且具有大量文档和社区较好、安全性和可扩展性等。 以下介绍两种Python的后端框架: Django:包含多个功能模块、高度可定制、可扩展、广泛的社区和文档; ...
  • PyScada:PyScada是一个使用Django框架作为后端的开源scada系统。
  • 电子书包 该存储库中包含E Bag的整个框架以及后端代码。 该分支机构的目的是开发一种更强大的方法来调节袋子内的电源
  • 使用vue-element-admin框架调用后端接口及跨域问题 webpack+vue-cil 中proxyTable配置接口地址代理 webpack开发配置API代理解决跨域问题-devServer vue-element-admin实战(一)修改登陆接口 实例 ...
  • 经项目要求。最近在研究Android使用volley框架配合后端服务器进行基本请求和图片的上传下载。网上的各种办法都发现有很多坑。决定将这次整理进行记录。以便以后查看。
  • PyScada, PyScada是一个开放源代码的SCADA系统,它使用 Django 框架作为后端 PyScada一个开放源代码的SCADA系统一个采用 Django 框架构建的开放源码SCADA系统,采用。 如果你想将自己的SCADA系统头设置到 ...
  • sshweb开发框架后端基本代码,lib自行使用即可struts2.5和spring hibernate 的 3.3
  • 使用vue-element-admin框架调用后端接口及跨域问题

    万次阅读 多人点赞 2019-05-24 16:30:54
    进行开发需要调用外部接口, 而且还涉及到跨域的问题, 百度出来的全部都是说在config目录加proxyTable…emmm是拉同一个项目吗大兄弟, 哪来的config目录 解决 随便写一个测试接口 from flask import Flas...
  • 第一次开发app,为了快速入手就去东翌编程买视频,做了人生第一个社区类app 总结如下: 第一,无muiH5文件上传的后台代码,因为直接传到东翌编程社区的服务器,而本地服务器存储的只是图片的访问路径, 第二,后台用...
  • 一个知识图谱展示网站,前端使用vue D3框架后端采用springboot框架
  • 本套PHP前端框架技术构成 JQUERY与PHP 用到jquery里的ajax与PHP的Select Case 路由 本套框架由路由文件route.php导航文件top.php,引导页面index.php构成,具体的代码相信有1年的工作经验的ASP程序员都
  • 技术文档正式开始: 本套ASP前端框架技术构成 JQUERY与ASP 用到jquery里的ajax与ASP的Select Case 路由 本套框架由路由文件route.asp,导航文件top.asp,引导页面index.asp构成,具体的代码相信有1年的工
  • 技术文档正式开始: 本套ASP前端框架技术构成 JQUERY与ASP 用到jquery里的ajax与ASP的Select Case 路由 本套框架由路由文件route.asp,导航文件top.asp,引导页面index.asp构成,具体的代码相信有1年的工作经验的ASP...
  • 推荐几个bootstrap 后端UI框架

    万次阅读 多人点赞 2018-08-10 14:43:43
    工欲善其事,必先利其器 对于从事软件开发的您也一样,有一套熟悉的bootstrap后台ui框架,bootstrap 后端模板让您的开发速度大幅度提升 这是本人经常使用到的一些bootstrap后台框架推荐给大家 第一名 inspinia ...
  • java后端开发(三):开发框架解读

    万次阅读 多人点赞 2018-09-03 21:40:21
    本篇旨在带领读者对框架有个宏观的印象,并了解框架的意义和种类
  • @Configuration public class CaffineCacheConfig { @Bean public UserRolePermissionCache userRolePermissionCache(){ return new UserRolePermissionCache(); } }

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 181,083
精华内容 72,433
关键字:

不用框架开发后端