资讯专栏INFORMATION COLUMN

使用Express开发小说API接口服务1.0(三)

shixinzhang / 955人阅读

摘要:使用开发小说接口服务三线上访问地址之前发现追书神器详情页竟然没有下一章和上一章的返回值,只能自己动手封装一下。

使用Express开发小说API接口服务1.0(三)

线上访问地址https://api.langpz.com/

之前发现追书神器API详情页竟然没有下一章和上一章的返回值,只能自己动手封装一下。

app.js 增加错误处理
// catch 404 and forward to error handler
app.use(function (req, res, next) {
    const err = new Error("Not Found");
    err.status = 404;
    next(err);
});

// error handler
app.use(function (err, req, res, next) {
    // set locals, only providing error in development
    res.locals.message = err.message;
    res.locals.error = req.app.get("env") === "development" ? err : {};

    // render the error page
    res.status(err.status || 500);
    res.render("error");
});

这些代码放到module.exports = app; 上面就可以了。

列表页增加返回ID

找到routes/chapter.js 29行替换

  res.send(JSON.stringify({ "flag": 1,"id": body._id,  "chapters": body.chapters, "msg": "OK" }));
详情页增加上一章和下一章的返回值
let express = require("express");
let request = require("request");
let common = require("../common/common.json"); // 引用公共文件
let router = express.Router();

/** 
  获取小说文章内容
  返回小说文章内容
  param link {String} 是小说文章列表接口 chapters[0].link
  http://chapter2.zhuishushenqi.com/chapter/${link}
*/
router.get("/", function (req, res, next) {
    if (!req.query.link) {
        res.send(JSON.stringify({ "flag": 0, "msg": "请传入link..." }));
    }
    // req.query.link 编码转义
    let link = encodeURIComponent(req.query.link);
    request.get(`${common.CHAPTER}/chapter/${link}`, function (err, response, body) {
        if (err) {
            res.send(JSON.stringify({ "flag": 0, "msg": "请求出错了..." }));
        }

        // 解析返回的数据
        body = JSON.parse(body);

        if (body.ok){
            // 再次请求列表页获取上一页和下一页
            if(req.query.id){
                // req.query.id 编码转义
                let id = encodeURIComponent(req.query.id);
                let n = parseInt(req.query.n);
                if (isNaN(n)){
                    n = 0;
                }

                request.get(`${common.API}/atoc/${id}?view=chapters`, function (err, response, body2) {
                    if (err) {
                        res.send(JSON.stringify({ "flag": 0, "msg": "请求出错了..." }));
                    }

                    if (body2 == "wrong param"){
                        res.send(JSON.stringify({ "flag": 0, "msg": "传入错误的ID..." }));
                    }else{
                        // 解析返回的数据
                        body2 = JSON.parse(body2);
                        // 检查页码是否超过小说的章节数
                        if(n > body2.chapters.length - 1){
                            res.send(JSON.stringify({ "flag": 0, "msg": "传入的页码过大" }));
                        }else{
                            // 如果有上一页或者下一页就返回link否则返回false
                            let prev,next;
                            body2.chapters[n - 1] ? prev = body2.chapters[n - 1].link : prev = false;
                            body2.chapters[n + 1] ? next = body2.chapters[n + 1].link : next = false;

                            if (body2.chapters.length > 0) {
                                res.send(JSON.stringify({ "flag": 1,"id": id, "chapter": body.chapter, "prev": prev,"next": next, "msg": "OK" }));
                            }
                        }
                    }
                });
            }else{
                res.send(JSON.stringify({ "flag": 1, "chapter": body.chapter, "msg": "OK" }));
            }
            
        }else{
            res.send(JSON.stringify({ "flag": 0, "msg": "传入link有错误" }));
        }
    });
});

module.exports = router;

访问http://localhost:3000/article?link=http://www.69shu.com/txt/1463...
新增n和id参数。
n 代表是第几页。
id 是书籍ID。

github仓库访问地址

https://github.com/lanpangzhi/novel-api

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/103420.html

相关文章

  • 使用Express开发小说API接口服务1.0(二)

    摘要:使用开发小说接口服务二线上访问地址之前完成了首页和搜索的接口,现在就开始写剩下的接口。获取小说源因为追书神器正版源是收费加密的,所以只能使用盗版源,所以要封装一个获取小说源的接口。小说源接口返回的。版本的开发就告于段落了。 使用Express开发小说API接口服务1.0(二) 线上访问地址https://api.langpz.com/ 之前完成了首页和搜索的接口,现在就开始写剩下的接口...

    Atom 评论0 收藏0
  • 使用Express开发小说API接口服务1.0(一)

    摘要:使用开发小说接口服务一版本技术栈使用。接口用追书神器。目前接口设计有首页,小说详情页,搜索,小说文章列表页,排行。搜索接口版本的搜索接口只取前条数据,可以模糊查询。取前条,并添加图片链接请求出错了请传入参数访问遮天就可以看到返回的数据了。 使用Express开发小说API接口服务1.0(一) 1.0版本技术栈使用express-generator、express、request、mor...

    CoffeX 评论0 收藏0
  • vue仿追书神器,vue小说项目源码

    摘要:一点阅读器源自追书神器,免费使用目前已初步开发完成项目地址欢迎,,推荐一个之前用文章类阅读写的一点阅读微信小程序一点文章已上线,可以再微信搜索一点文章体验在线体验地址点击这里体验服务器太,渲染慢部分效果截图一点阅读器优势一点阅读器追书神 vue-reader 一点阅读器!API源自追书神器,免费使用!目前已初步开发完成! Github项目地址:https://github.com/An...

    justCoding 评论0 收藏0
  • vue仿追书神器,vue小说项目源码

    摘要:一点阅读器源自追书神器,免费使用目前已初步开发完成项目地址欢迎,,推荐一个之前用文章类阅读写的一点阅读微信小程序一点文章已上线,可以再微信搜索一点文章体验在线体验地址点击这里体验服务器太,渲染慢部分效果截图一点阅读器优势一点阅读器追书神 vue-reader 一点阅读器!API源自追书神器,免费使用!目前已初步开发完成! Github项目地址:https://github.com/An...

    happyhuangjinjin 评论0 收藏0
  • vue仿追书神器,vue小说项目源码

    摘要:一点阅读器源自追书神器,免费使用目前已初步开发完成项目地址欢迎,,推荐一个之前用文章类阅读写的一点阅读微信小程序一点文章已上线,可以再微信搜索一点文章体验在线体验地址点击这里体验服务器太,渲染慢部分效果截图一点阅读器优势一点阅读器追书神 vue-reader 一点阅读器!API源自追书神器,免费使用!目前已初步开发完成! Github项目地址:https://github.com/An...

    Pocher 评论0 收藏0

发表评论

0条评论

shixinzhang

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<