收藏
回答

云开发,HTTP API调用,query字段的字符串拼接,怎样才能更简单一些?

       写的有点啰嗦,可以直接跳到文章最后看总结.

      使用了一段小程序云开发的HTTP API,最开始的时候,我以为这个HTTP API可以在没有服务器的情况下,前端开发者就可以完成一个小程序的所有工作,等到真正去实践的时候,发现在没有服务器的情况下,你就要把要开发的小程序的相关信息,暴露在浏览器的可视环境下.

    之所以会暴露小程序的相关信息,是因为只在前端调用HTTP API的时候,第一步要做的就是获取 access_token,之后所有的操作都要在有access_token情况下进行.而获取access_token的前提就是,你要把小程序的appid和secret传给微信的服务器.然后呢,稍微懂点技术的,就可以通过查看浏览器的调试面板,查看小程序的appidsecret.

    云开发中,除了需要有access_token,还需要有云环境ID.一样会暴露出来,别人能看到这些

    如果只是前端环境去做一个管理云数据库的后台,就会存在上面我说的问题.

    我的解决办法,

    1.有一个服务器,服务器保存有后台的帐号密码,在登录成功以后,返回access_tokenenv,存储到localStorage里面.后面就可以继续开发了.跨域的问题,可以用类似于vue代理的解决方案.

    2.用electron写一个客户端管理工具,关闭跨域.

   另外还有一个问题是数据库的操作部分,比如一个简单的插入操作,传值的时候竟然是字符串拼接的方式,如下


这是最让我费解的地方,字符串拼接不好的地方,做过前端的,应该都深有感触.而且还有就是,字符串拼接,就拼接吧,为什么字段的值,一定要用双引号,可能我有操作不当的地方,但我实践过程中,我用单引号代替双引号(或者直接用JSON.JSON.stringify),能插入成功,但返回的是这个



总结下云开发中碰到的问题,

1.没有服务器的,单纯的前端开发,如何在不暴露小程序相关信息(appid等)的情况下,获取access_token

2.云数据库的数据操作传值,query字段,有没有好方法去拼接字符串(为啥不能直接传JSON呢 - -)

字符串拼接

let str = ''
for(let key in data){
   str += key +':\\"'+ data[key]+'\\",'
}
str  = '{'+str+'}'


附上一段拼接的字符串,插入报错

"db.collection(\"articles\").add(

{

data:[

{_id:\"5\",

author:\"wing\",

catgory:\"未分组\",

content:\"<p>开始你的表演….</p>\",

createDate:\"2019-11-13 23:11\",

istop:\"false\",

tags:\"\",

title:\"测试标题1\",

type:\"post\",

upDate:\"2019-11-13 23:11\",

}

]

})"

我是一只还在成长中的前端小白,虚心求教,还望大佬大神,阿姨叔叔们,哥哥,姐姐,弟弟,妹妹们,不吝赐教,不胜感激.拜谢.


最后一次编辑于  11-13
回答关注问题邀请回答
收藏

3 个回答

  • 老张
    老张
    11-13

    我是用反引号` `来拼装,这样就不用反斜杠,原脚本直接引用就行。

    11-13
    赞同
    回复 1
    • One Eight Nine Four
      One Eight Nine Four
      11-13
      文档中的那个传递参数示例,字段是不能有引号的,而值要加引号.
      11-13
      回复
  • garField
    garField
    11-13

    第一个问题,HTTP API 确实不是给“没有服务器”的人准备的。估计都没考虑这种情况。

    你一定要在本地调用的话,就别分发给别人,这样攻击你的人知道你开机密码才能抓包。

    11-13
    赞同
    回复 2
    • o0o有脾气的酸奶
      o0o有脾气的酸奶
      11-13
      云函数里可以调用HTTP API的
      11-13
      回复
    • One Eight Nine Four
      One Eight Nine Four
      11-13
      没有服务器也是可以用的,就是我的第二种解决办法,用electron做客户端.
      11-13
      回复
  • o0o有脾气的酸奶
    o0o有脾气的酸奶
    11-13

    你可以试试,看看哪个不报错

    a="{a:'b'}"

    JSON.parse(a)

    ========

    a="{'a':'b'}"

    JSON.parse(a)

    ========

    a="{\"a\":'b'}"

    JSON.parse(a)

    ========

    a="{\"a\":\"b\"}"

    JSON.parse(a)


    11-13
    赞同
    回复 1
    • One Eight Nine Four
      One Eight Nine Four
      11-13
      晚上回去试试看.但是,还是很麻烦.搞不明白,为什么要用字符串拼接的方式.
      11-13
      回复
问题标签