对接水仙后台(支持AndLua+、FA、FA2、AIDE lua、Simple Lua等)

[复制链接]
发表于 2023-2-25 23:48:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
前言

上一篇文章中写了lua对接水仙后台,不过发现不能支持图片上传,比如修改头像等,通过修改,支持了
api封装
  1. require "import"
  2. import "http"
  3. shuixian={
  4.     post=function(moduleName,method,postdata,filedata,call)
  5.         local url="http://shuixian.ltd/main/api/"
  6.         if(filedata==nil) then
  7.             content,cookie,code,header=http.post(url..moduleName.."/"..method..".php",postdata)
  8.             call(code,content,cookie,header)
  9.         else
  10.            content,cookie,code,header=http.upload(url..moduleName.."/"..method..".php",postdata,filedata)
  11.            call(code,content,cookie,header)
  12.         end
  13.     end   
  14. }
复制代码
食用方法


  • 导入模块 或将上面代码复制到自己的代码中,复制代码就不需要导入
import "shuixian"

  • 调用方法
shuixian.api(模块名,方法名,提交参数(可为表或字符串),文件参数(可为表或字符串),返回参数)
例子:以用户系统-用户注册为例
  1. shuixian.api("user","register",postdata,function(code,content,cookie,header))
  2. --[[
  3. 在水仙后台找到对应系统对应方法的提交接口,如用户修改接口:
  4. http://shuixian.ltd/main/api/user/user_set.php
  5. 则上面方法的模块名和方法名如下:
  6. http://shuixian.ltd/main/api/{模块名}/{方法名}.php
  7. postdata说明:
  8. 以用户系统-用户修改接口为例,官方示例如下:
  9. 提交参数{
  10. admin=管理员账号
  11. user=用户账号
  12. password=用户密码
  13. project=要修改的信息(例:name、signatrue、password、head、wallet)
  14. 例如:
  15.   project=name(修改昵称)
  16.   name=要修改的昵称
  17.   
  18.   project=signatrue(修改签名)
  19.   signatrue=要修改的签名
  20.   
  21.   project=password(修改密码)
  22.   new_password=要修改的新密码
  23.   
  24.   project=head(修改头像)
  25.   
  26.   project=wallet(扣除用户积分)
  27.   num=扣除的数量
  28.   
  29.   project=mail(修改邮箱)
  30.   mail=新邮箱
  31.   code=验证码
  32. }
  33. -- 以修改头像为例
  34. postdata={
  35.     admin="管理员账号",
  36.     user="注册账号",
  37.     password="用户密码",
  38.     project="head"
  39. }
  40. filedata={
  41.     head="/storage/emulated/0/Pictures/Image.jpg"   -- 头像图片的路径
  42. }
  43. 返回参数说明:
  44. code:响应代码,2xx表示成功,4xx表示请求错误,5xx表示服务器错误,-1表示出错
  45. content:内容,如果code为-1,则为出错信息
  46. cookie:服务器返回的用户身份识别信息
  47. header:服务器返回的头信息
  48. 解析返回内容:
  49. 使用cjson等json包解析
  50. result=cjson.decode(content)
  51. if(result.code==1) then
  52.     print("注册成功")
  53. elseif(result.code==0) then
  54.     print("注册失败-"..result.msg)
  55. else
  56.     print("程序错误-"..result.msg)
  57. end
  58. ]]
复制代码

  • 测试案例
  1. import "cjson"
  2. import "http"
  3. shuixian={
  4.     post=function(moduleName,method,postdata,filedata,call)
  5.         local url="http://shuixian.ltd/main/api/"
  6.         if(filedata==nil) then
  7.             content,cookie,code,header=http.post(url..moduleName.."/"..method..".php",postdata)
  8.             call(code,content,cookie,header)
  9.         else
  10.            content,cookie,code,header=http.upload(url..moduleName.."/"..method..".php",postdata,filedata)
  11.            call(code,content,cookie,header)
  12.         end
  13.     end   
  14. }
  15. postdata={
  16.     admin="自己在水仙后台的管理员账号,也就是qq号",
  17.     user="注册账号",
  18.     password="",
  19.     project="head",
  20.     key="在后台修改配置的key"
  21. }
  22. -- key 看是否在个人后台开启,如开启在postdata中添加参数即可
  23. -- 无文件上传的接口,filedata参数传nil即可
  24. filedata={
  25.     head="/storage/emulated/0/Pictures/Image.jpg"   -- 头像图片的路径
  26. }
  27. shuixian.api("user","user_set",postdata,filedata,function(code,content,cookie,header)
  28.     if(code==200) then
  29.         local result=cjson.decode(content)
  30.         if(result.code==1) then
  31.             print("修改成功")  -- 编写自己的业务处理代码
  32.         elseif(result.code==0) then
  33.             print("修改失败-"..result.msg) -- 编写自己的业务处理代码
  34.         else
  35.             print("程序错误-"..result.msg) -- 编写自己的业务处理代码
  36.         end
  37.     else
  38.     end
  39. end)
  40. --[[
  41. 返回参数的多层级的json,如举报记录接口,查看文档返回如下参数:
  42. 返回参数{
  43. code=响应码(0失败,1成功,-1程序错误)
  44. msg=响应信息
  45. data{
  46. id=id
  47. user=举报用户
  48. name=用户昵称
  49. head=用户头像
  50. content=举报内容
  51. time=举报时间
  52. state=受理状态
  53. result=受理内容
  54. }
  55. }
  56. 如:
  57. 获取举报用户,result.data.user即可
  58. ]]
复制代码
总结

对接返回json格式数据的api,就是一个json解析的操作,通过软件自带的网络请求模块即可完成我们的需求。
本文由【产品经理不是经理】gzh同步发布,欢迎关注
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表