星空网 > 软件开发 > Java

C蛮的全栈之路

目录

C蛮的全栈之路-序章 技术栈选择与全栈工程师
C蛮的全栈之路-node篇(一) 环境布置
C蛮的全栈之路-node篇(二) 实战一:自动发博客

---------------- 我是分割线 --------------

光看不写,收获必定不高。
咱们从一个实际功能开始把node用起来。

【数据分析】6 点发的文章在博客园阅读量最高?

这里有个链接,说每天6点发出阅读量最高。那么我们会希望先把内容准备好,然后6点的时候自动发出。
那么这个需求要怎么实现。我们一步一步做起来。

---------------- 分析 --------------

考虑做法,比如有这些思路:
1、博客园本身提供的定时发博客的办法
2、博客园提供的API
3、模拟登陆操作博客园后台
翻一下后台,博客自身没有提供这个功能,但在“设置”底部有一个“MetaWeblog访问地址: http://rpc.cnblogs.com/metaweblog/bolee”。
说明支持MetaWeblog接口API。
定时功能满地都是,成熟的很,所以需要做的主要就是要实现一个调用MetaWeblog发布博客的功能。

---------------- 准备工作 --------------

GitHub,搜MetaWeblog,找JavaScript的资源,就找到了“node-modules/metaweblog”。
简单看一眼,里头实现了一个metaweblog的client,正是我们需要的。
那么建立一个工程目录,用npm install metaweblog拿下来。
它依赖这样准备工作就齐全了。

---------------- 开工 --------------

看一下metaweblog的接口。主要用这两个API。
Post metaWeblog.getPost(postid, username, password);
bool metaWeblog.editPost(postid, username, password, post, publish);
可见从getPost拿到随笔,用editPost传publish=true就可以发布了。

Post的结构里必填的部分如下:
dateTime dateCreated
string description
string title

OK!开始编码:

C蛮的全栈之路C蛮的全栈之路
var MetaWeblog = require('metaweblog').MetaWeblog;var rpcurl = 'http://rpc.cnblogs.com/metaweblog/你的昵称';var username = '你的昵称';var password = '你的密码'; var postid = '你要发布的随笔的链接末尾的数字';var publish = true;var blog = new MetaWeblog(rpcurl);// GetPostByPostIDblog.getPost(postid, username, password, function(err, post) {});

View Code

跑起来看一眼返回的post是这样的。

C蛮的全栈之路

可以看到,内容是C蛮的全栈之路C蛮的全栈之路

function jsonGetNameValue(obj) { if (typeof(obj) != 'object') {  return {}; } var name = obj['name']; var value = obj['value']; var ret = {}; if(name != undefined && value != undefined) {  ret[name] = value; } for(var key in obj) {  extend(ret, jsonGetNameValue(obj[key])); } return ret;}

View Code

现在再看看jsonGetNameValue(post)的内容:

C蛮的全栈之路

这就舒服多了,我们想要的Post结构的内容都在里头。这样就可以调用editPost了。

 

C蛮的全栈之路C蛮的全栈之路
// GetPostByPostIDblog.getPost(postid, username, password, function(err, post) { var ret = jsonGetNameValue(post); var editedPost = {'dateCreated': parseCNBlogIsoDatetime(ret['dateCreated']['datetime']['iso8601']),  'description': ret['description']['string'].toString(),  'title': ret['title']['string']};  // publish blog.editPost(postid, username, password, editedPost, publish, function(err, editResult) {  console.log(JSON.stringify(editResult)); });});// 返回{"params":{"param":{"value":{"boolean":1}}}}

View Code

 

跑起来看一眼,输出了true。

确认一下,果然已经发布出去了。

---------------- ESLint --------------

用npm装一下ESLint,VSCode里装个ESLint扩展,配好后报出一些错误,都解决掉,把格式顺一顺。
这样第一个版本就出炉了。
还有什么是可以做的呢?可以考虑来个ES6版本,加上错误处理等。

---------------- 功能点 --------------

npm、GitHub、ESLint等,这个例子没有express、koa什么的框架,也没有什么redis、mysqlMongoDB等周边的东西。

作为第一个例子算比较单纯了。

下载demo

 




原标题:C蛮的全栈之路

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

天津海运罗马尼亚:https://www.goluckyvip.com/tag/92544.html
天津海运新西兰:https://www.goluckyvip.com/tag/92546.html
从中国到马来西亚的海运:https://www.goluckyvip.com/tag/92547.html
从中国到马来西亚海运:https://www.goluckyvip.com/tag/92548.html
退款预防办法:https://www.goluckyvip.com/tag/9255.html
国际海运到马来西亚:https://www.goluckyvip.com/tag/92550.html
加拿大本地账户开立是否需要加拿大身份? :https://www.kjdsnews.com/a/1842166.html
加拿大本地账户开立是否需要加拿大身份? :https://www.xlkjsw.com/news/92266.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流