简 介:

🐤HTTP请求是客户端向服务器发送的请求消息,用于获取或操作服务器上的资源

以下是HTTP请求的主要组成部分:

  1. 请求行(Request Line):包含请求方法(如GET、POST)、请求资源的路径以及HTTP协议版本。请求方法是对资源的操作类型,如GET用于获取资源,POST用于提交数据。
  2. 请求头(Headers):提供客户端和请求的相关信息,如User-Agent(用户代理)、Accept(可接受的内容类型)、Content-Type(内容类型)等。这些信息可以帮助服务器更好地处理请求。
  3. 请求体(Body):在请求一些需要传输数据的操作(如POST)时,请求体中会包含要发送给服务器的数据。并非所有HTTP请求都包含请求体,比如GET请求通常不包含请求体。

🐤HTTP协议定义了多种请求方法,每种方法都有其特定的用途和特点。以下是一些常见的HTTP请求方法及其简要描述:

  1. GET:用于请求服务器发送指定资源。这是最常见的请求方法,通常用于获取网页内容或查询数据。
  2. POST:用于向服务器提交数据,通常会导致服务器状态的改变或产生副作用。例如,用户登录信息或者上传文件通常会使用POST方法。
  3. PUT:用于更新服务器上的资源。如果资源不存在,服务器应该创建它。
  4. DELETE:用于删除服务器上的资源。
  5. PATCH:用于对资源进行部分更新,与PUT不同,PUT通常是完全替换资源。

案例

关闭域名校验

在开始之前,我们需要先关闭域名校验

为了确保所有小程序在运行时的安全性,微信小程序官方要求所有线上版本的小程序必须使用HTTPS协议进行网络通信,不满足条件的域名和协议将无法发出请求。在本地开发环境中,可以通过关闭项目设置中的TLS安全检测来使用非HTTPS地址进行测试。

如下图,在开发工具的 详情->本地设置 中,勾选不校验合法域名。

🍀Get请求

微信小程序提供了一个名为wx.request的API函数,用于发起HTTPS网络请求。下面是一个使用wx.request发起GET请求的示例:

首先我们使用后端代码编写一个Get请求的接口,如下该接口,接受一个查询字符串name,接口响应 姓名是:name

然后在wxml中定义一个按钮,绑定一个函数。

<button bindtap="getInfo">发一个get请求</button>

接着在js文件中定义我们上边绑定的getInfo函数,在下面代码中,method是请求方法,data即是请求的参数,GET请求时放在URL中,POST请求时放在请求体中。

getInfo() {
    wx.request({
      url: 'http://localhost:5105/api/Test/TestGet',
      method: 'GET',
      data: {
        name:'张三'
      },
      success: (res) => {
        console.log(res.data)
      }
    })
  }

当点击请求,请求成功时,回调函数success会被调用。res 参数是一个对象,包含了服务器返回的数据和其他信息。这里使用箭头函数来简化代码,并输出服务器返回的数据 res.data 到控制台。

 🍀Post请求

和上面一样,我们先使用后端代码写一个post请求的接口

 然后在wxml中定义一个按钮,绑定post请求的函数。

<button bindtap="postInfo">发一个post请求</button>

在js文件中,与get请求不同的是,我们将method属性指定的HTTP 请求的方法换成了post,在这种情况下,wx.request 会将 data 字段中的对象转换为 JSON 字符串,并作为请求体发送给服务器。

  postInfo() {
    wx.request({
      url: 'http://localhost:5105/api/Test/testpost',
      method: 'post',
      data: {
        name:'李四',
        age:21
      },
      success: (res) => {
        console.log(res.data)
      }
    })
  }

🐳生命周期函数onLoad

小程序的onLoad是一个页面生命周期函数,表示页面加载时会触发该函数,通常用于数据的初始化。

在页面加载时,onLoad函数会被自动调用,并将页面的参数(options)传递给这个函数。options参数是一个包含页面参数的对象,其中的每个属性表示一个页面参数,属性名为参数名,属性值为参数值。这样,你可以在页面加载时获取到页面跳转时传递的参数,例如:

Page({  
  onLoad:function(options) {  
    console.log(options.id); // 输出页面跳转时传递的id参数  
  }  
})

onLoad函数在小程序的生命周期中起到了至关重要的作用,每次打开页面都会执行。在这个函数中,你可以进行数据初始化、网络请求等操作,例如向服务器请求数据、检查用户权限、检查网络连接状态等。同时,你也可以根据入参信息,展示不同的页面。

如下图,我们将刚刚定义的getInfo,postInfo函数都放入onLoad函数中,当我重新编译进入小程序的这个页面中,这两个函数就会被自动执行。

🐳关于跨域问题

在前后端分离的web开发中,我们通常需要解决跨域问题,但是小程序在发送请求时不会出现跨域问题。因为其运行环境和工作机制与基于浏览器的Web开发有所不同。

  1. 运行环境:小程序的宿主环境不是浏览器,而是特定的应用平台(如微信、支付宝等)的客户端。这些平台为小程序提供了特定的API和框架,使得小程序能够在其内部进行网络通信和数据交互。
  2. 跨域策略:跨域问题主要源于浏览器的同源策略(Same-Origin Policy)。该策略要求一个网页中的脚本只能访问与该网页同源的资源。然而,小程序并不受到这一策略的限制,因为它们并不在浏览器中运行。相反,小程序使用的是平台提供的网络通信API,这些API允许小程序在符合一定规则的前提下,与其他域名的服务器进行通信。
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐