Feat: Install Redis & Test API
安装 Redis,测试编写必应和状态 API(昨晚应该提交的
This commit is contained in:
parent
30062e5d99
commit
c2999ea5e7
|
|
@ -15,7 +15,8 @@
|
|||
"ahooks": "^3.3.0",
|
||||
"isomorphic-unfetch": "^3.1.0",
|
||||
"react": "^17.0.2",
|
||||
"react-dom": "^17.0.2"
|
||||
"react-dom": "^17.0.2",
|
||||
"redis": "^4.0.6"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@midwayjs/mock": "^3.3.0",
|
||||
|
|
|
|||
|
|
@ -0,0 +1,63 @@
|
|||
import { Api, Get, Query, useContext } from '@midwayjs/hooks';
|
||||
import fetch from 'isomorphic-unfetch';
|
||||
|
||||
import { client } from '../utils/redis';
|
||||
|
||||
export default Api(
|
||||
Get(),
|
||||
Query<{ info: undefined }>(),
|
||||
async (ddd) => {
|
||||
const ctx = useContext();
|
||||
|
||||
// 增加使用数量
|
||||
await client.incr("api-next:stat:bing");
|
||||
|
||||
const cache = await client.lRange("api-next:bing", 0, 2);
|
||||
|
||||
let image;
|
||||
|
||||
if (cache.length) {
|
||||
image = {
|
||||
url: cache[0],
|
||||
copyright: cache[1],
|
||||
};
|
||||
}
|
||||
else {
|
||||
const response = await fetch("https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1", {
|
||||
headers: {
|
||||
"cache-control": "max-age=0",
|
||||
"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36"
|
||||
}
|
||||
});
|
||||
const json = await response.json();
|
||||
|
||||
image = {
|
||||
url: `https://cn.bing.com${json.images[0].url}`,
|
||||
copyright: json.images[0].copyright,
|
||||
};
|
||||
|
||||
await client.rPush("api-next:bing", [image.url, image.copyright]);
|
||||
await client.expire("api-next:bing", 21600);
|
||||
}
|
||||
|
||||
// 获取失败
|
||||
if (!image) {
|
||||
return {
|
||||
code: 0,
|
||||
msg: "Failed"
|
||||
}
|
||||
}
|
||||
|
||||
// 没有 info,跳转图片地址
|
||||
if (!("info" in ctx.query)) {
|
||||
ctx.status = 302;
|
||||
ctx.set('location', image.url);
|
||||
}
|
||||
|
||||
return {
|
||||
code: 1,
|
||||
data: image,
|
||||
cached: cache.length ? true : false
|
||||
};
|
||||
}
|
||||
);
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
import { Api, Get } from '@midwayjs/hooks';
|
||||
|
||||
import { client } from '../utils/redis';
|
||||
|
||||
export default Api(Get(), async (repo: string) => {
|
||||
const neteaseStat = await client.get("api-next:stat:netease");
|
||||
const bingStat = await client.get("api-next:stat:bing");
|
||||
|
||||
return {
|
||||
code: 1,
|
||||
data: {
|
||||
wallpaper: -1,
|
||||
netease: Number(neteaseStat),
|
||||
music: -1,
|
||||
avatar: -1,
|
||||
bili: -1,
|
||||
bing: Number(bingStat),
|
||||
}
|
||||
};
|
||||
});
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
import { createClient, RedisClientType } from 'redis';
|
||||
|
||||
export let client: RedisClientType;
|
||||
|
||||
(async () => {
|
||||
client = createClient({
|
||||
url: 'redis://127.0.0.1:6379'
|
||||
});
|
||||
|
||||
client.on('error', (err) => console.log('Redis Client Error', err));
|
||||
|
||||
await client.connect();
|
||||
})();
|
||||
74
yarn.lock
74
yarn.lock
|
|
@ -566,6 +566,41 @@
|
|||
dependencies:
|
||||
"@midwayjs/cookies" "^1.0.2"
|
||||
|
||||
"@node-redis/bloom@1.0.1":
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@node-redis/bloom/-/bloom-1.0.1.tgz#144474a0b7dc4a4b91badea2cfa9538ce0a1854e"
|
||||
integrity sha512-mXEBvEIgF4tUzdIN89LiYsbi6//EdpFA7L8M+DHCvePXg+bfHWi+ct5VI6nHUFQE5+ohm/9wmgihCH3HSkeKsw==
|
||||
|
||||
"@node-redis/client@1.0.5":
|
||||
version "1.0.5"
|
||||
resolved "https://registry.yarnpkg.com/@node-redis/client/-/client-1.0.5.tgz#ebac5e2bbf12214042a37621604973a954ede755"
|
||||
integrity sha512-ESZ3bd1f+od62h4MaBLKum+klVJfA4wAeLHcVQBkoXa1l0viFesOWnakLQqKg+UyrlJhZmXJWtu0Y9v7iTMrig==
|
||||
dependencies:
|
||||
cluster-key-slot "1.1.0"
|
||||
generic-pool "3.8.2"
|
||||
redis-parser "3.0.0"
|
||||
yallist "4.0.0"
|
||||
|
||||
"@node-redis/graph@1.0.0":
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@node-redis/graph/-/graph-1.0.0.tgz#baf8eaac4a400f86ea04d65ec3d65715fd7951ab"
|
||||
integrity sha512-mRSo8jEGC0cf+Rm7q8mWMKKKqkn6EAnA9IA2S3JvUv/gaWW/73vil7GLNwion2ihTptAm05I9LkepzfIXUKX5g==
|
||||
|
||||
"@node-redis/json@1.0.2":
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/@node-redis/json/-/json-1.0.2.tgz#8ad2d0f026698dc1a4238cc3d1eb099a3bee5ab8"
|
||||
integrity sha512-qVRgn8WfG46QQ08CghSbY4VhHFgaTY71WjpwRBGEuqGPfWwfRcIf3OqSpR7Q/45X+v3xd8mvYjywqh0wqJ8T+g==
|
||||
|
||||
"@node-redis/search@1.0.5":
|
||||
version "1.0.5"
|
||||
resolved "https://registry.yarnpkg.com/@node-redis/search/-/search-1.0.5.tgz#96050007eb7c50a7e47080320b4f12aca8cf94c4"
|
||||
integrity sha512-MCOL8iCKq4v+3HgEQv8zGlSkZyXSXtERgrAJ4TSryIG/eLFy84b57KmNNa/V7M1Q2Wd2hgn2nPCGNcQtk1R1OQ==
|
||||
|
||||
"@node-redis/time-series@1.0.2":
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/@node-redis/time-series/-/time-series-1.0.2.tgz#5dd3638374edd85ebe0aa6b0e87addc88fb9df69"
|
||||
integrity sha512-HGQ8YooJ8Mx7l28tD7XjtB3ImLEjlUxG1wC1PAjxu6hPJqjPshUZxAICzDqDjtIbhDTf48WXXUcx8TQJB1XTKA==
|
||||
|
||||
"@nodelib/fs.scandir@2.1.5":
|
||||
version "2.1.5"
|
||||
resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
|
||||
|
|
@ -1168,6 +1203,11 @@ cls-hooked@^4.2.2:
|
|||
emitter-listener "^1.0.1"
|
||||
semver "^5.4.1"
|
||||
|
||||
cluster-key-slot@1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/cluster-key-slot/-/cluster-key-slot-1.1.0.tgz#30474b2a981fb12172695833052bc0d01336d10d"
|
||||
integrity sha512-2Nii8p3RwAPiFwsnZvukotvow2rIHM+yQ6ZcBXGHdniadkYGZYiGmkHJIbZPIV9nfv7m/U1IPMVVcAhoWFeklw==
|
||||
|
||||
co-body@^6.0.0:
|
||||
version "6.1.0"
|
||||
resolved "https://registry.yarnpkg.com/co-body/-/co-body-6.1.0.tgz#d87a8efc3564f9bfe3aced8ef5cd04c7a8766547"
|
||||
|
|
@ -1712,6 +1752,11 @@ function-bind@^1.1.1:
|
|||
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
|
||||
integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
|
||||
|
||||
generic-pool@3.8.2:
|
||||
version "3.8.2"
|
||||
resolved "https://registry.yarnpkg.com/generic-pool/-/generic-pool-3.8.2.tgz#aab4f280adb522fdfbdc5e5b64d718d3683f04e9"
|
||||
integrity sha512-nGToKy6p3PAbYQ7p1UlWl6vSPwfwU6TMSWK7TTu+WUY4ZjyZQGniGGt2oNVvyNSpyZYSB43zMXVLcBm08MTMkg==
|
||||
|
||||
gensync@^1.0.0-beta.2:
|
||||
version "1.0.0-beta.2"
|
||||
resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
|
||||
|
|
@ -2413,6 +2458,30 @@ redaxios@^0.4.1:
|
|||
resolved "https://registry.yarnpkg.com/redaxios/-/redaxios-0.4.1.tgz#a46fd53b533ed76d8619d9e6d595b95543855195"
|
||||
integrity sha512-+Jhh1j8/H0KBro+Hih/MrDEJ1PICaU10JA6iu5b3+uvgRI+5n2M7qpMNXq7eC/0fspP0tTq49ONXlGWFdRoNLg==
|
||||
|
||||
redis-errors@^1.0.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/redis-errors/-/redis-errors-1.2.0.tgz#eb62d2adb15e4eaf4610c04afe1529384250abad"
|
||||
integrity sha1-62LSrbFeTq9GEMBK/hUpOEJQq60=
|
||||
|
||||
redis-parser@3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/redis-parser/-/redis-parser-3.0.0.tgz#b66d828cdcafe6b4b8a428a7def4c6bcac31c8b4"
|
||||
integrity sha1-tm2CjNyv5rS4pCin3vTGvKwxyLQ=
|
||||
dependencies:
|
||||
redis-errors "^1.0.0"
|
||||
|
||||
redis@^4.0.6:
|
||||
version "4.0.6"
|
||||
resolved "https://registry.yarnpkg.com/redis/-/redis-4.0.6.tgz#a2ded4d9f4f4bad148e54781051618fc684cd858"
|
||||
integrity sha512-IaPAxgF5dV0jx+A9l6yd6R9/PAChZIoAskDVRzUODeLDNhsMlq7OLLTmu0AwAr0xjrJ1bibW5xdpRwqIQ8Q0Xg==
|
||||
dependencies:
|
||||
"@node-redis/bloom" "1.0.1"
|
||||
"@node-redis/client" "1.0.5"
|
||||
"@node-redis/graph" "1.0.0"
|
||||
"@node-redis/json" "1.0.2"
|
||||
"@node-redis/search" "1.0.5"
|
||||
"@node-redis/time-series" "1.0.2"
|
||||
|
||||
reflect-metadata@^0.1.13:
|
||||
version "0.1.13"
|
||||
resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.13.tgz#67ae3ca57c972a2aa1642b10fe363fe32d49dc08"
|
||||
|
|
@ -2871,6 +2940,11 @@ ws@^7.2.3:
|
|||
resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.7.tgz#9e0ac77ee50af70d58326ecff7e85eb3fa375e67"
|
||||
integrity sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==
|
||||
|
||||
yallist@4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
|
||||
integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
|
||||
|
||||
ylru@^1.2.0:
|
||||
version "1.3.2"
|
||||
resolved "https://registry.yarnpkg.com/ylru/-/ylru-1.3.2.tgz#0de48017473275a4cbdfc83a1eaf67c01af8a785"
|
||||
|
|
|
|||
Loading…
Reference in New Issue