VFP也可以做前端,猫猫走过无数的弯路,才总结出这篇BS入门

调试服务器使用

打开框架项目文件
运行 环境设置.prg
运行调试服务器即可启动。
默认端口为801,IP为开发机器所在的IP

图片

测试调试服务器

打开好调试服务器,就可以打开浏览器(推荐 使用360极速,谷歌浏览器)
输入http://192.168.0.99:801/1.fsp 根据开发机器修改IP
同台机器也可用127.0.0.1

图片


出现如上的字样表示调试服务器工作良好。

网址URL和开发框架的一些约定

http://192.168.0.99:801/a1send.fsp?proc=Send
192.168.0.99为IP地址,如果有域名可以换成域名
801为HTTP服务端口
1.Fsp 使用FSP做为调用文件名,调用a1send.prg中的
a1send类
proc=Send参数调用a1send类的方法

编写一个控制器类

控制器类是与BS前端交互的接口类

A1send类的定义

Define Class a1send As Session  Procedure Send  Return "Hello world"  EndprocEnddefine

调用时浏览器输入 http://127.0.0.1:801/a1send.fsp?proc=sendJson
就可以看到输出JSON了。
也可以使用POSTMAN来测试。

图片

服务器接收GET传参

*-- WebApi 控制器类
*-- 规范:文件名跟类名是一样的.如类名:1Send,文件名1Send.prg
*-- 调用格式 http://ip:端口号/类名.fsp?proc=类过程名
*-- http传参 get方式传参 在url中进行拼接
*-- 用&键=值对来传值,可多个拼接 http://ip:端口号/类名.fsp?proc=类过程名&参数1=参数值

Define Class a2get As Session    *--传参 key1=test     Procedure get    cResult=httpqueryparams("key1",this.iconnid)    cResult1=httpqueryparams("key2",this.iconnid)    RETURN "您传的参数是:"+cResult+cResult1    ENDPROC
Enddefine

调用时浏览器输入 http://127.0.0.1:801/a2get.fsp?proc=get&key1=test&key2=123
第一个键值对参数用?连接,第二个以后用&连接。
也可以使用POSTMAN来测试。

图片

POST 传参的说明

BS参数的传递有传键值对,有传JSON和其它格式。
放在URL(GET方式)中只能用键值对传参。
POST方式放在Body中可以发送JSON,键值对和其它格式。

键值对格式的接收

VFP后端统一用HttpQueryParams接收

JSON或其他格式

用HttpGetPostData原样接收,自行解析。

服务器接收Post传参

以下代码放在a3post的控制器类中,接受发过来的POST所有数据 并返回去

Procedure Post    LOCAL cPostData    cPostData=HttpGetPostData(this.iconnid)    RETURN cPostData  Endproc   *--解析键值对格式 name=张三&age=21  Procedure PostParams    LOCAL cname,cage    cname=httpqueryparams("name")    cage=httpqueryparams("age")    RETURN "姓名:"+cname+"年龄:"+cage  Endproc

因为浏览器地址栏里面是没有办法进行POST测试的,所以我们使用POSTMAN工具来辅助测试。

图片

如上图所示,输入URL和参数之后,按Send按键就可以测试了。

VFP作为前端调用后端的控制器类

准备工作
1 客户端项目与服务端项目要分开不同的文件夹
2 用两个VFP分别打开相应的项目
3 客户端首先运行环境设置,再运行调试服务器后关掉调试服务器
4 服务 端首先运行环境设置,再运行调试服务器 不关 

VFP客户端用Get方式传参

cUrl="http://127.0.0.1:801/a2get.fsp?proc=get"+"&key1="+"12345"WebClient=Newobject("Qiyu_HttpClient","Qiyu_HttpClient.prg")cData=WebClient.send(cUrl)If !Isnull(cData)    Messagebox(cData,11)Else    Messagebox(WebClient.msg)Endif

VFP客户端用POST方式传参

Post传参可以直接加上URL中传,也可以放在Post(URL,键值对)

cUrl="http://127.0.0.1:801/a3post.fsp?proc=PostParams"WebClient=Newobject("Qiyu_HttpClient","Qiyu_HttpClient.prg")WebClient.method="post"WebClient.setHeader("content-type","application/x-www-form-urlencoded") &&键值对形式提交cData=WebClient.send(cUrl,"name=张三&age=21")If !Isnull(cData)    Messagebox(cData)Else    Messagebox(WebClient.msg)Endif

祺佑框架JSON格式约定

成功 (串内也可以放其它信息)
{" errno " :0, " errmsg " : " ok "}
失败
{ “errno”: 1, “errmsg”:”错误信息”}

举例
{ "errno": 1, "errmsg": "文件 '1.prg' 不存在。", "success": "false", "errorMsg": "文件 '1.prg' 不存在。过程:socketweb1._onread,行号:171", "total ": 0, "rows": "\"192.168.0.99:801 \"" }

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fitche

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值