分类 默认分类 下的文章

postman接口测试

之前使用postman都只会设置静态的环境变量 如设置请求的域名. 这样切换就可以很方便的切换正式库和测试库.
最近由于需要做接口测试,必须先调用login接口后记录token值,然后再依次调用后面的所有的接口需要把token动态的写入.去查了postman的相关资料,终于发现在postman的测试(Tests)标签栏里是可以做接口返回数据校验已经设置环境变量当前值的.

以下是我写在login接口中的Tests脚本

pm.test("Status code is 200", function () {
    pm.response.to.have.status(200);
});

pm.test('success', function () {
    var jsonData = pm.response.json();
    pm.environment.set("token", jsonData.result.token);
    pm.expect(jsonData.code).to.eql(200);   // 返回的json code值为200
})

其他的接口里可以不设置token,单纯检测状态值返回以及json code返回

最后提一下: postman里面的runner是没法做并发测试的.

如果需要并发测试,可以参考 github开源框架
newman通过导出postman配置文件,用node进行并发测试.

通过纹理的2维坐标点定位球形贴图对应所在位置

最近有一个需求,希望能在全景图的贴图上直接选择位置放置物体,最后反应在全景图的相应位置点.在这里记录一下开发代码:

全景球体创建

      let path = this.publicPath + 'texture/uv_grid_opengl.jpg'

      let texture = new THREE.TextureLoader().load(path)
      let material = new THREE.MeshBasicMaterial({
        map: texture,
        side: THREE.DoubleSide // 也可以是单面
      })

      let geometry = new THREE.SphereBufferGeometry(510, 40, 40) // 半径 ,宽高分割数.可以随意
      geometry.scale(-1, 1, 1) // 让贴图在内部贴,而不是外部.

      this.$mesh = new THREE.Mesh(geometry, material)

图片上选点

通过图片相对位置计算出在全景球体的相对坐标

参考代码:https://threejsfundamentals.org/threejs/lessons/threejs-align-html-elements-to-3d.html

      // x,y 的0点位置从左上角来算的,反应在图片上的长宽比值.
      // 因为geometry的x坐标返了,所以真也要相反处理
      let lat = (e.y - 0.5) * 180
      let lon = (1 - e.x) * 360

      const lonFudge = -Math.PI * 0.5 // Math.PI
      const latFudge = Math.PI
      // these helpers will make it easy to position the boxes
      // We can rotate the lon helper on its Y axis to the longitude
      const lonHelper = new THREE.Object3D()
      // We rotate the latHelper on its X axis to the latitude
      const latHelper = new THREE.Object3D()
      lonHelper.add(latHelper)
      // The position helper moves the object to the edge of the sphere
      const positionHelper = new THREE.Object3D()
      positionHelper.position.z = 500
      latHelper.add(positionHelper)

      // adjust the helpers to point to the latitude and longitude
      lonHelper.rotation.y = THREE.MathUtils.degToRad(lon) + lonFudge
      latHelper.rotation.x = THREE.MathUtils.degToRad(lat) + latFudge

      // get the position of the lat/lon
      positionHelper.updateWorldMatrix(true, false)
      const position = new THREE.Vector3()
      positionHelper.getWorldPosition(position)

      // 最终x,y点反应在球形位置上.
      let pos = [position.x, position.y, position.z]

全景图上效果

小程序集成trtc-room 提示 is not defined

最近做了一个实时音视频小程序,用了微信的实时音视频服务,将demo中的trtc-room搬过来后直接提示
Error: module "static/component/trtc-room/trtc-room.js" is not defined

最终原因是没有在本地设置中设置将ES6转ES5,因为本身程序是用mpvue开发的,其他都不需要转,所以没有考虑到这方面的原因,查了一个晚上,特此记录,给自己长个记性....

通过外网访问openwrt管理路由器后台

有时候我们想在公司上班的时候访问一下家里路由器的后台(好多原因拉,比方说下载电影等等等等...)

因为平时确实有这方面的需求存在,查了一下资料,比方说可以通过搭建rpc服务器做内网穿透等等...很开心,本人是电信的宽带,IP是外网IP,正好我自己有好多个域名,可以通过域名商开放的api接口实现dns动态绑定IP.

本人是腾讯云的域名服务商,但是腾讯云的域名开放api网上资料有点少,偶然间发现腾讯云原来就是dnspod域名商.dnspod的域名商接口简单不少,关键是每个接口都有curl的调用示例,非常的方便.附上两个dnspod的api链接:
dnspod Token申请 https://support.dnspod.cn/Kb/showarticle/tsid/227/
dnspod 域名记录修改api https://www.dnspod.cn/docs/records.html#record-modify

连curl的示例都有真的是太简单了,需要做的就是写个shell脚本定时跑就完了.

接下来就是openwrt设置防火墙让外部的访问可以访问到路由器后台:

防火墙基本设置 , 主要是都改成接收,

防火墙基本设置

端口转发 , 外部的80端口被服务商封了,需要用其他端口转发到内部的80端口

防火墙端口转发

恩...到了最后,我又发现了openwrt其实有一个ddns的管理工具,就是帮你把定时更新dns解析的脚本也做好了,叫koolddns ^_^

楼层设备点编辑

项目有需求要将对接过来的设备展示在3d建筑模型内,就涉及到一个后台操作保存设备点的位置的功能.
基于three.js源码中的editor的二次开发,基本实现了想要的需求

github源码地址

demo展示地址

界面展示

界面初始化展示

大概流程为初始化化时加载建筑后显示某一层楼建筑,并且加载设备列表,点击设备列表可添加到楼层场景当中进行调整位置,大小,方向.
设备编辑状态展示

该demo未完成部分为初始化时向后台请求获取楼层列表以及当前楼层下的设备列表,还有点击保存按钮后提交到后台数据库中去等涉及到和后台接口联调的部分.