zhizhi/backend/routes_副本/notion.js

62 lines
1.5 KiB
JavaScript

const express = require('express');
const axios = require('axios');
const router = express.Router();
const NOTION_TOKEN = process.env.NOTION_TOKEN;
const NOTION_VERSION = '2022-06-28';
const BASE_URL = 'https://api.notion.com/v1';
const headers = () => ({
'Authorization': 'Bearer ' + NOTION_TOKEN,
'Content-Type': 'application/json',
'Notion-Version': NOTION_VERSION
});
router.get('/test', (req, res) => {
res.json({
status: 'ok',
message: 'Notion 路由正常',
token_configured: !!NOTION_TOKEN
});
});
router.get('/database/:id', async (req, res) => {
try {
const response = await axios.post(
BASE_URL + '/databases/' + req.params.id + '/query',
{},
{ headers: headers() }
);
res.json(response.data);
} catch (err) {
res.status(500).json({ error: err.message, detail: err.response ? err.response.data : null });
}
});
router.get('/page/:id', async (req, res) => {
try {
const response = await axios.get(
BASE_URL + '/pages/' + req.params.id,
{ headers: headers() }
);
res.json(response.data);
} catch (err) {
res.status(500).json({ error: err.message, detail: err.response ? err.response.data : null });
}
});
router.post('/page', async (req, res) => {
try {
const response = await axios.post(
BASE_URL + '/pages',
req.body,
{ headers: headers() }
);
res.json(response.data);
} catch (err) {
res.status(500).json({ error: err.message, detail: err.response ? err.response.data : null });
}
});
module.exports = router;