WORDPRESS 的 REST API 本身是没有身份验证的,我安装了 miniOrange 的 WordPress REST API Authentication
免费部分只有 Basic Authentication 和 JWT Authentication ,
作为学习 REST API 够用了。
一般使用 postman 测试 api ,后来卸载了,现在账号找回密码邮件总是收不到!
在VSCode中使用 REST client 来测试也很直观
安装、启用、配置 WordPress REST API Authentication
- 在wordpress 中启用 WordPress REST API Authentication 后,进入配置 (Configure)
2. 下一步 ( next ),一定 Test Configuration 正确,并且 finish,看到 JWT Authentication Method is configured successfully. 就算配置好了!
在 VSCode 安装 REST client 测试 api
- 他的说明和例子还是很多的,抄过来照着修改就好!
2. 我的测试文件 $ cat testRest.http
#wzh 20230626
# 测试学习 WORDPRESS REST API
# 安装并配置插件: miniOrange 的 WordPress REST API Authentication
# 只测试免费部分: Basic Authentication 和 JWT Authentication ######################################
## 以下使用 Basic Authentication
## 找个 base64 转换的网站 https://c.runoob.com/front-end/693/
## 或者 linux 命令 $ echo 用户名:密码 | base64
## 用户名:密码转换后 d3poOlBhc3N3b3JkQDEyMw==
##
## 赋予变量 @basic_auth
@basic_auth = Basic d3poOlBhc3N3b3JkQDEyMw==
### 验证一个 api
GET https://wp85.dhbm.cn/wp-json/wp/v2/posts
## Authorization : Basic d3poOlBhc3N3b3JkQDEyMw==
Authorization : {{ basic_auth }}### 验证是否开启 rest api
GET https://wp85.dhbm.cn/wp-json/wp/v2
Authorization : {{ basic_auth }}######################################
### 以下使用 JWT Authentication ### [1] Get User Token from the Token Endpoint:
POST https://wp85.dhbm.cn/wp-json/api/v1/token
Content-Type: application/json{"username": "用户名","password": "密码"
}### 或者: [1] Get User Token from the Token Endpoint: 获取 token
POST https://wp85.dhbm.cn/wp-json/api/v1/token HTTP/1.1
Content-Type: application/x-www-form-urlencodedusername=用户名
&password=密码## copy 前面得到的 jwt_token ,替换以下 token 部分
@auth_jwt = Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOjEsIm5hbWUiOiJ3emgiLCJpYXQiOjE2ODc4NTIyNzUsImV4cCI6MTg0NTUzMjI3NX0.PgT5Ab7f_0RDRgU_yegIfLaD09Dp5kRx6WvthAV1Ipc### [2] Check if token is valid: 验证token
## @auth_jwt = Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOjEsIm5hbWUiOiJ3emgiLCJpYXQiOjE2ODc4NTIwMzgsImV4cCI6MTg0NTUzMjAzOH0.x6YeqIdi7CtmFM9JPu6PDhkVVrpLJ8Xoj3t9bV03H8s
GET https://wp85.dhbm.cn/wp-json/api/v1/token-validate
Authorization : {{ auth_jwt }}### [3] Access the protected REST APIs by using the jwt_token obtained from above Step[1]:
### 验证几个 api :/wp-json/wp/v2/posts
GET https://wp85.dhbm.cn/wp-json/wp/v2/posts
Authorization : {{ auth_jwt }}### 验证几个 api :/wp-json/wp/v2/posts
GET https://wp85.dhbm.cn/wp-json/wp/v2/pages
Authorization : {{ auth_jwt }}### 验证是否开启 rest api
GET https://wp85.dhbm.cn/wp-json/wp/v2
Authorization : {{ auth_jwt }}
错误处理
-
“code”: “rest_no_route”
url 写错了!
刚开始我安装了几个类似的 REST API 插件,有的启用了,有的没有启用
他们的 url 是不一样的 -
“error”: “Restricted”
“error_description”: “Sorry, you are not allowed to access REST API.”,
这就是验证不通过!
一定搞明白安装并启用的 REST API 插件设置的 Authentication 方式,并确认配置完成了!
开始时我就是配置(configuration)没有完成(finish)就开始测试,结果 token 是获得了,后续死活不行!