#小白接口# 使用云函数,人人都能编写和发布自己的API接口
你只需编写简单的云函数,就可以实现自己的业务逻辑,发布后就可以生成自己的接口给客户端调用。
果创云支持对云函数进行在线接口编程,进入开放平台我的接口 – 在线接口编程,设计一个新接口,设计和配置好接口参数、接口名称、接口返回后,再把云函数源代码填上,提交审核通过并发布后即可使用。
云函数编写入口:在线接口编程。
云函数具有以下特点和优势:
- 1、无需管理服务器即可运行移动后端代码
- 2、可在线接口编程,自动生成云接口和接口文档
- 3、代码简单,功能强大,一行代码就可以实现数据库、短信发送等功能
- 4、可以开发自己的接口,实现自己的业务逻辑
云函数由开发者自己编写,发布后可生成自己的云接口,即MyAPI,而云函数底层则依赖于果创云提供的基础服务。
因此,云函数整体架构如下:
整体架构分为四层:
- 第一层:MyAPI我的接口 提供给客户端调用的云接口。
- 第二层:云函数。 由开发者自己编写,可在线接口编程,编写云函数,生成接口。
- 第三层:果创云聚合服务 由果创云提供,封装了常用的服务,可进行数据库、CURL、短信等服务操作。
- 第四层:云服务 由第三方提供的云服务,包括但不限于自建数据库、云数据库、企业邮箱、短信接口、开放平台接口和内部接口等。
当前只支持PHP云函数,开发者自定义的云函数,需要符合PHP语法。其云函数签名和云函数模板如下:
云函数参数说明:
- $params,类型:数组,为当前客户端的接口参数,由开发者配置的接口参数和客户端动态传递的参数而定,例如:array(\’uuid\’ => null, \’left\’ => 1, \’right\’ => 2)
- $di,类型:数组,为DI容器,里面封装并提供了众多强大而实用的PHP服务,例如数据库操作等,对于后端编程有非常大的帮助,后面会详细介绍。
如何获取客户端传递过来的接口参数?
在果创云开放接口参数配置,添加参数后,就可以在源代码中获取。如下:
假设,配置的接口参数名字为:abc,那么在PHP源代码中,获取接口参数的方式是从$params参数中获取,如:
参数名称和配置的接口名称一致。并且,此时获取的接口参数会根据配置的接口参数规则进行过滤、转换和检测。
温馨提示:接口会自动对客户端的参数进行校验、核对和转换,通过$params参数获取的是最终可用的参数。
开头不需要<?php标签,结束不需要?>标签。你可以在本地调试好PHP代码函数,或者通过在线工具编写和运行你的PHP代码。
特别注意以下几点:
- 1、接口代码需要符合PHP语法,PHP语法可参考PHP 教程
- 2、一些敏感的PHP函数和API接口会被禁用,例如读写本地文件、获取系统信息等。
如何进行本地调试? 在本地调试时,可以这样执行你的PHP代码。首先,创建一个PHP文件,例如:yesapi.php,然后在里面放置代码:
即这样执行,通过CLI方式运行。
温馨提示:在本地没有$di服务,可以使用空数组来代替,或进行模拟测试。
如何返回接口结果呢?
以下是一个返回示例:
注意,应该在函数的最后一行代码通过return关键字返回结果。结果的类型是数组,且应包括:err_code、err_msg这两个基本字段,以及其他需要自定义的返回字段。其中,约定err_code为0表示成功。
以下是一个简单的例子,进行两个数的相加。
添加一个新接口,并进行编辑:
编写接口时,设置接口参数、接口返回、云函数代码等,如(局部截图):
保存后,你可以看到类似这样的在线接口文档(部分截图):
在完成接口设计和云函数开发后,就可以勾选“申请发布”。等审核通过后即可发布和使用。
。
发布通过后,你就可以生成了自己的云接口,以及在线接口文档。
在线接口文档,可以提供给客户端开发人员查看和接入使用;云接口可以提供给客户端进行调用。
生成的完整在线接口文档类似:
接口文档地址:
客户端调用后,就可以得到云函数执行后的结果。
编写好云函数后,会自动生成云接口,和接口文档。如果需要,也可以自己手动编写接口文档。
温馨提示:如果需要手动编写API接口文档,可以进入我的在线文档编辑,保存后可发布接口文档。
文档编辑后台:
保存后,外部查看的接口文档效果:
如果需要支持多个客户端调用API接口,可以【客户端管理】,添加客户端应用,然后分配app_key和密钥。
以下通过代码示例和模板,介绍云函数如何进行开发,大家可以把代码复制过去,稍作修改。只需要简短的几行PHP代码,或者一段代码,你就实现自己的业务逻辑,无需管理服务器即可运行移动后端代码。
在开始,以下是一些重要的知识点和注意事项。
- 我的模型数据库操作请使用:$di[\’db\’]->模型英文名称_tbl,例如文章模型:$di[\’db\’]->article_tbl,后面要固定加上_tbl;
- 直连数据库(MySQL/SQLServer等)操作请使用:$di[\’db_super\’]->数据库表完整名称,例如:$di[\’db_super\’]->article;使用前请配置接入你的数据库。
再重复说明下,直连数据库和我的模型数据库操作一样,区别在于:直连数据库在使用前需要先配置接入你的数据库,DI服务使用$di[\’db_super\’],最后需要填写完整的表名称,不需要额外的_tbl后缀。
DI服务 功能说明 备注 $di[\’db\’] 我的模型数据库 可进行CURD数据库操作,针对单表 $di[\’db_super\’] 直连数据库 可进行CURD数据库操作,针对单表,使用前需要进行MySQL数据库直连服务配置 $di[\’logger\’] 日志服务 纪录各种日志 $di[\’email\’] 邮箱服务 发送邮件,使用前需要进行邮箱服务配置 $di[\’pinyin\’] 拼音服务 将汉字转成拼音 $di[\’curl\’] CURL服务 请求远程接口,仅支持80端口 $di[\’crypt\’] 安全服务 对数据进行加密和解密 $di[\’sms_aliyun\’] 阿里云短信 通过阿里云服务发送短信,使用前需要进行阿里云服务配置
假设传递参数为:left=1&right=2,请求此云函数后,将会得到如下结果:
假设你有模型如下,有23条数据:
请求此云函数后,将会得到如下结果:
温馨提示:获取列表数据时,一定要使用limit限制分页数量,否则会审核不通过。
温馨提示:通过云函数以及CURL,可以对原有的API接口进行封装,形成对外开放的接口API。
温馨提示:日志纪录后,可以到开放平台查看日志。
温馨提示:使用前请先配置邮箱服务配置。
温馨提示:每个app_key加密的数据,只能由自己的app_key进行解密。
温馨提示:使用前需要进行阿里云服务配置
更多示例,即将到来!
在线考试教学系统平台系统源码/视频教学系统PHP源码
需要交流的朋友记得关+赞+评!!!
✨ 源码介绍
在线考试教学系统平台系统源码,视频教学系统PHP源码,在线考试系统PHP源码。
1、部署好网站环境:php5.6+mysql
2、将源码传至网站根目录,php源码用二进制上传,或者上传压缩包在空间解压
3、将“fcnet_cc.sql”数据库文件导入MySQL数据库
3、将 lib\\config.inc.php 里面的数据库连接信息配置成自己的
免责声明:根据二○一三年一月三十日《计算机软件保护条例》2次修订第17条规定:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬!鉴于此,也希望大家按此说明研究软件!本站所有源码都来源于网络收集修改或者交换!如果侵犯了您的权益,请及时告知我们,我们即刻处理!
后端开发干货:PHP源码阅读技巧
作者:张勇,腾讯IEG后台开发工程师
时光匆匆 光阴似箭,今年已经是小张做码农的第N个年头了,得益于世界上最好的语言(PHP),小张的头发依旧茂密。但是项目写了一个又一个,PHP、swoole用到飞起,这些年的成长却大不如从前。
你是否也纠结于此,今天让我们换个角度看PHP,打开源码从C的角度看PHP,看一眼这个具有20年历史的庞大C项目是如何工作的。
从这一刻开始,你将荣升为C程序员,你可以去温习一下C的语法、结构体、指针和引用。
你也许会问,看个代码git拉一下用sublime打开不就好了吗,为什么要写个KM。确实这样可以看代码,但那叫看代码片段,不是看工程。PHP项目需要兼容Windows、Linux、Mac平台还要处理线程安全,其代码包含大量宏定义。我们需要借助IDE的自动跳转和提示才能更好的阅读。
我们需要一个IDE无错误提示的项目。(当你要看一个方法却无法跳转的时候,真是太难受了)
devCloud是内部用于开发调试的linux虚拟机。没有的小伙伴可以自己准备一台可以ssh的CentOS虚拟机,本地虚拟机或云平台都可以。(最好网络能好一点,后面要传不少东西)
后面我们需要使用Clion作为C项目的IDE,Clion需要使用cmake作为项目自动化构建工具。所以我们首先需要安装cmake devCloud上的yum默认的cmake版本为2.8.12.2符合要求,这里就直接用yum安装。
re2c 是语法生成器
devCloud的gdb版本过低,这里需要手动安装一个符合要求的版本,我选了7.8.2
选择一个php版本,这里我用7.1.33版本。 有几个理由:
1.项目中使用了这个版本。
2.php7对内核做了大量的改动,之前的php5已经不适合学习了。
3.后续会介绍的书籍也是基于php7.0的版本和php7.1比较接近。
4.php8目前还在测试,且和php7比较接近。
注意:本地远程都拉取一份,要保持tag一致,两边都要执行下面的cmake改造
工欲善其事必先利其器,要看代码需要选一个好的IDE,多年使用PhpStorm的我推荐使用全家桶里面的Clion。一般我们不会直接使用Linux做桌面系统,这里使用Clion的远程部署功能配合devCloud做环境部署。我的本地是Windows环境,构建编译在远端的devCloud进行。(用WSL也是一样的,但是PHP的git仓库太大在WSL中做git操作非常卡,应该是WSL文件系统的bug)
这一步是阻止大部分同学使用Clion查看PHP源码的主要原因。PHP项目由于历史悠久一直使用autoconfig作为项目自动管理工具。然而Clion并不支持autoconfig,它需要项目使用cmake构建,因此我们需要对php的源码做cmake构建改造。
https://wiki.php.net/internals/cmake 官网有一份cmake的改造文档。
https://github.com/gloob/php-cmake github上也有对应的代码。
但是这个文档和代码都太老了,应该是PHP5年代的代码。我对这个项目做了一些升级,兼容了PHP7(水平有限可能存在问题,欢迎提PR)。
在本地执行如下命令,clone php-cmake项目,切换分支,拷贝php-cmake/cmake中的所有文件到php源代码目录。注意目录合并。
这里设置远程机器的信息,设置相关工具的路径。一般会自己识别,如果不能识别可以手动输入。会检查版本,默认devCloud上的版本好像都不正确需要自己升级。
这里需要设置代码同步的目录,设置好以后点按√好设置为默认。完成上面Toolchains设置后,这里可能默认出现一个devCloud的信息,但是Mappings 里面的Deployment path是/tmp/目录下面,你可以删除自己配置,也可以直接修改Deployment path到你需要的项目目录。
注意:这里的Local path如果是windows上需要使用/分割路径,不是windows默认的\\,否则在执行cmake构建的时候会提示目录无法找到。
在Options里面可以设置 不要同步.phpt文件,这是php项目中的测试用例文件。(我们在拉代码的时候其实已经会手动保证本地和远程机器的文件一致,但是Clion还会自己同步一次,设置这个可以加速同步速度。)
同步代码到devCloud。首次同步真的很慢,你需要耐心等待。
执行cmake构建,看看报错不?
由于PHP cmake构建会在远端生成一些文件,我们需要同步这些文件到本地,否则打开代码会因为这部分.c .h文件不存在导致代码没有提示,各种报错。
选择比对方式 用Size adn Timestamp 会快一点,这里比较慢,耐心等待一下。
分析完成以后,就可以看到远程比本地多的文件了,我们需要把他们同步到本地。最上面的.clion.source.upload.marker 不需要同步,可以点击红框中的箭头取消。 之后点击同步。
打开php_cli.c看看源码,是不是干干净净一个红线都没有。
光看肯定是不行的,最好能把代码跑起来 打个断点可以更深入的了解运行机制。你可以用gdb去断点。我这里既然用了clion就直接用clion的断点功能,用起来更直观。
1、准备一个yong.php 写一点代码用来做测试文件。
2、这里配置运行配置。
3、设置 arguments 和 Working directory
4、把yong.php文件同步到远端。执行以下看看。
5、打断点。真的很爽~~
PHP项目有很多目录,大概功能如下:
其实和源代码相关的 只有这几个目录, 在Clion中标记为Source和Header目录方便IDE构建索引。
准备工作都做好了,还有借口不看代码吗?如果你还是不知道从哪里开始,那我推荐从main函数开始吧。 它在sapi\\cli\\php_cli.c的最后面。 附图一张可以和源代码结合起来看。 图片引自:https://github.com/pangudashu/php7-internal/blob/master/1/base_process.md
最后推荐一本书 秦朋 的 《PHP7内核剖析》
本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com
文章为作者独立观点不代本网立场,未经允许不得转载。