最近开发小程序,需要前后台对接,当使用wx.request方法向后台发送http请求时,控制台报错,随后就google了一下,本文主要讲述此问题及解决方案。

问题

控制台报错截图:


看到控制台报错,提示要配置域名,google了一下,确实有很多关于wx.request请求配置服务器的文章,就配置了服务器(当时并没有服务器)。

难道在开发阶段每次测试都要吧代码推送到服务器么?有这么麻烦么?于是就开始尝试通过第三方平台,以便利前后台对接的测试,如leancloud等,然而效果并不理想。

解决方案

  • 首先,控制台虽然报错了,但是依然可以正确的发送请求,点击请求的地址即可得到请求的返回值(如果请求地址正确的话,地址可以是本地的)。在测试阶段是可以正确的发送http请求,但是项目上线后就需要配置服务器了。
  • 端口问题。wx,request文档中说明了请求的地址不能带有端口号,笔着使用SpringMvc后台开发,端口号是8080,讲端口号改为80即可省略端口号。
  • 在本地开发,如果想配置服务器的话,可以通过修改host文件的方法。将本地与配置的域名进行绑定。配置方法如下:
    红色方框中的代码作用是,当我们访问api.water.mengyunzhi.com服务器时,实际上访问的地址是localhost。DNS的作用就是对ip地址进行解析,使其和域名相对应。而hosts文件是用来提高效率的,在进行dns请求前,系统会先检查自己的hosts文件中是否有这个地址的映射关系,如果有,则直接调用这个映射关系,如果没有再向dns服务器提出域名解析。也就是说 Hosts 的请求级别比 DNS 高。当你的 Hosts 文件里面有对应的 IP 时,它就会直接访问那个 IP,而不用通过 DNS。相应的,在小程序的后台配置这个域名即可:
    实际上访问的是localhost,这样就方便了我们前后台对接。

总结

在这个问题上,笔者开始的时候犯了一个严重的错误:在软件开发中,相信大多时候第三方平台都会尽力满足开发者的需求,方便我们开发测试。而不至于发送一个请求就要配置服务器这样繁琐的操作。

如有错误,欢迎指正!