🦄 2024 独立开发者训练营,一起创业!查看介绍 / 立即报名 →

博客

圣诞礼物:两瓶杰克丹尼威士忌

前两天我说要请大家喝两杯,就是今天了,准备了两瓶杰克丹尼威士忌。之前是因为看了一部电影(王牌特工 2,不算好看:),里面有句台词说:“我喜欢 Jack + 可乐”,说的就是杰克丹尼威士忌跟可乐掺一块儿喝。突然也想试一下(植入广告起作用了),就先上京东买了瓶。又突然想起快过圣诞节了,一直在想今年送点什么礼物,觉得烈酒也是不错的礼物,即使不爱喝,也可以收藏起来,所以就想多买几瓶送给大家。

我之前没喝过,上周末约了几个朋友在家把它喝光了。买了些可乐,7 喜柠檬水,水溶 100C 柠檬水,杯子里放六分之一的酒就行,剩下再放些柠檬水,加点冰块更好一些。在冰箱里找了一小瓶冰了挺长时间的矿泉水,费挺大劲才把里边儿的冰砸碎。女士也都挺喜欢喝的,加柠檬水的威士忌酸酸甜甜的,更像是饮料,只不过带酒精,喝多了也会有点懵。小雪说加可乐的杰克丹尼有点口服液的味儿,我喝是觉得有点巧克力的香味。

想跟你喝两杯,又快圣诞节了

又一年的圣诞节。它总是让我回想起一个特别的场景 ...   今年,想请几位朋友哈(喝)两杯,准备了 6 瓶杰克丹尼,送给六位朋友。以薄酒,表示一下我对大伙的感激之情。没有办法请到所有人,因为暂时还没有这个实力。所以我就随便问几个问题,大家到时候留下评论就行了。

那就跟大家约在这个月 6 号,13 号还有 20 号,上午 10 点。每次问个小问题(在宁皓网微信公众号),说对最快的前两位朋友(年龄 18 +),我就把酒送到您的府上。

我不算是爱酒之人,偶尔约朋友小酌几杯,也觉得是很有乐趣的一件事。

几许将烈酒斟满,那空杯中
借着那酒洗去悲伤
旧日的知心好友,何日再会
但愿共聚互诉往事
—— 《再见理想》by Beyond

用人类语言解释:REST API 与 RESTful API

API,应用程序接口,也可以叫应用程序界面,或者简称为应用接口。应用程序的设计可以相当复杂,但最终的用户并不需要知道应用程序的内部到底是如何工作的,你只需要给用户提供一些操作接口,再告诉用户怎么用这些接口就行了。

用个现实例子,比如手机上的音量按键,就像是应用程序里的接口,用户不用知道按下按键具体发生的事情,这是工程师研究的东西,用户只知道按下这个按钮可以增大音量,或者减小音量。再回到程序设计来也是一样的,你的应用提供了一些接口给用户,用户可以通过这些接口去做一些事情。

REST,就是一种应用接口的设计风格。RESTful 是 REST 的形容词形式,RESTful API 指的是 REST 风格的接口。一般 REST 与 RESTful 是一个意思,区别就是一个是名词,一个是形容词。

如果有人对你说,我的应用支持 REST 接口。他的意思就是,你可以通过 HTTP + 具体的动作去处理他的应用上的一些资源(Resources),比如文章,评论,文件,用户 ...

微信小程序:基于 JWT(JSON Web Token) 的身份验证

在微信小程序里,用户的相关信息是在后端服务那里保存的。我们可以给用户在小程序上准备一个登录页面,用户输入他的用户名还有密码,可以申请登录。后端服务收到登录请求,验证用户输入的登录信息是否有效,如果有效就给用户签发一个 JSON Web Token,小程序收到签发的 Token 会把它存储在自己的 Storage 里,下回用户再请求需要权限的资源的时候,可以带着签发的这个 Token,服务端那里会验证 Token 的有效性,然后决定是否要执行用户请求的动作。

上面说的就是在小程序上实施基于 JSON Web Token 的身份验证的主要流程。在新发布的《微信小程序:应用后台__身份验证》这个课程里介绍了如何开发实现这种身份验证的功能。后端服务我用了 WordPress,你也可以选择其它框架作为小程序的后端服务,比如 Drupal,Laravel,Rails,Node.js 等等。流程基本都是一样的。

微信小程序:回调,Promise,async,await 的使用例子

下面用个例子演示在微信小程序里使用 Promise,async,await 这些东西。小程序里有个 wx.authorize 接口可以向用户要些权限,访问用户对应的资源,比如得到用户的位置,获取用户的相关信息等等。wx.getSetting 这个接口可以得到用户的授权配置信息,比如用户是否已经授权我们使用他的用户信息。

微信小程序:微信登录流程讨论

小程序里用微信的开放接口微信登录,跟大家讨论一下在应用里面实施这个微信登录功能的设计流程。

获取用户的微信登录状态

在应用里我们先要得到用户的微信登录状态,这个状态要在我们的应用的后端服务那里对微信接口发出请求并获取。

小程序请求登录码

得到登录状态首先得有个登录码,小程序提供了一个 wx.login 接口,它可以得到登录码。

wx.login({
  success: (login) => {
    console.log(login.code)
  }
})

这个登录码会在 wx.login 接口的成功回调得到的响应的 code 属性里面。有了这个登录码,我们要去请求自己的后端服务接口,让接口去请求微信的登录接口。这个请求可以在小程序里面用 wx.request 来发出,请求的类型是 POST,请求的数据里面要包含获取到的登录码。

微信小程序:用户授权 wx.authorize

微信小程序里,使用一些接口的时候需要得到用户的授权,用户同意以后我们就可以得到相应的权限,去做一些事情。比如获取用户微信帐号相关信息,得到用户的位置,保存到相册等等。

比如我想知道用户微信帐号相关的信息。先用 wx.getSetting 检查一下用户当前对我们的小程序的授权状态,如果发现用户还没有授权小程序查看他的用户信息,就去调用 wx.authorize 弹出对话窗提醒用户是否要授权小程序得到他的用户信息。用户如果按了同意,接下来我们就可以使用 wx.getUserInfo 这个接口去得到用户相关的信息了,比如他的头像,名字等等。

WordPress:注册新的 REST 接口

WordPress 核心自带了一些 REST 接口,可以处理文章,用户,评论等等这些资源。有时候我们需要自己加工一些接口功能,WordPress 支持我们添加这样的自定义 REST 接口。注册的接口相关的信息可以挂载到 rest_api_init 这个钩子函数上。注意接口用的是 register_rest_route 函数。

Endpoints

一个例子:

<?php

function ninghao_rest_hello_callback() {
  return 'hello ~';
}

function ninghao_rest_register_route() {
  register_rest_route( 'ninghao/v1', 'hello', [
    'methods'   => 'GET',
    'callback'  => 'ninghao_rest_hello_callback'
  ] );
}

add_action( 'rest_api_init', 'ninghao_rest_register_route');

微信小程序:分页显示内容,实现无限页面加载功能

微信小程序上显示的内容列表,需要分页显示,向下滚动页面,页面到底了以后如果列表里面还有要显示的项目,就把下一页上的内容项目加载进来放到当前的页面上显示出来。这个就是无限页面加载功能。

思路

小程序的页面滚动到底部的时候,会触发一个 onReachBottom 方法,在这个方法里我们可以去实现加载下一页内容项目的功能。页面加载(onLoad)以后,向服务端请求得到第一页要显示的内容项目,通常在得到的响应里面,服务端会包含一些额外的信息,比如请求的列表一共有多少个项目,当前给我们的是哪些,当前的页码是什么,列表分成了多少页等等。利用这些信息,结合 onReachBottom 就可以实现无限加载功能了。

微信小程序:后端服务接口(WordPress)

微信的小程序相当于是一套前端(Frontend)应用的框架,让它变成一个真正能用的 App,我们还得给它提供一个后端服务,或者叫应用后台(Backend)。几乎所有的后端应用框架都支持为小程序提供后端服务。WordPressDrupalRailsNode.js ...   了解一下 RESTful 风格的后端服务接口。

后端服务通过 RESTful 风格的接口为小程序提供数据,或者处理从小程序那里发送过来的数据。比如可以给小程序提供一个内容列表让它在页面上显示,可以接收小程序发送(POST,DELETE,PATCH)过来的数据,比如把内容保存到后端的数据库里。

微信好友

用微信扫描二维码,
加我好友。

微信公众号

用微信扫描二维码,
订阅宁皓网公众号。

240746680

用 QQ 扫描二维码,
加入宁皓网 QQ 群。

统计

15260
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点