基于V2EX API的nodejs组件.
今天又学习到了新的知(zi)识(shi),来给自己做个笔录,也算在这酷热的天气里给自己写了一篇降温的‘膏药’,话就讲这么多了 ,start off......
首先 ,依赖选择:
/**设置为严格模式*/
'use strict'; //引入依赖
const https = require('https');
const querystring = require('querystring');
const util = require('util');
下面代码块,可以理解为封装好的模块,创建命名为:V2exApi.js(此处随意),如何调用下面会讲到,go on......
//定义类
class V2exApi { /**
* V2exApi constructor.
*/
constructor() {
} /**方案一
* @param string api
* @param array params
* @param bool $format
*
* @return mixed|string
*
* @throws HttpException
*/
request(api, params = {}, $format = true) { let apiDomain = "https://www.v2ex.com/api/"; //格式化地址
let apiUrl = util.format(api, apiDomain, Object.keys(params).length > ? querystring.stringify(params) : '');
const result = "";
https.get(apiUrl, res => {
const buffer = [];
res.on('data', data => {
buffer.push(data);
});
res.on('end', err => {
let data = Buffer.concat(buffer).toString('utf-8');
result = $format ? JSON.parse(data) : data;
}); }).on('error', err => {
console.log(err);
}); return result;
} /**方案二 异步
* @param string api
* @param array params
* @param bool $format
*
* @return mixed|string
*
* @throws HttpException
*/
// request(api, params = {}, $format = true) { // return new Promise(resolve => {
// //格式化请求地址
// let apiDomain = "https://www.v2ex.com/api/"; // let apiUrl = util.format(api, apiDomain, Object.keys(params).length > 0 ? querystring.stringify(params) : '');
// const result = "";
// https.get(apiUrl, res => {
// const buffer = [];
// res.on('data', data => {
// buffer.push(data);
// });
// res.on('end', err => {
// let data = Buffer.concat(buffer).toString('utf-8');
// result = $format ? JSON.parse(data) : data;
// resolve(result);
// }); // }).on('error', err => {
// resolve(err);
// });
// });
// } /**
* 获取最热主题.
*
* @param bool $format
*
* @return mixed|string
*
* @throws HttpException
*/
getHotTopics($format = true) {
return this.request('%stopics/hot.json', {}, $format);
} /**
* 获取最新主题.
*
* @param bool $format
*
* @return mixed|string
*
* @throws HttpException
*/
getLatestTopics($format = true) {
return this.request('%stopics/latest.json', {}, $format);
} /**
* 获取节点信息.
*
* @param string $name
* @param bool $format
*
* @return mixed|string
*
* @throws HttpException
*/
getNode(name, $format = true) {
return this.request('%snodes/show.json?%s', { 'name': name }, $format);
} /**
* 根据用户名获取用户信息.
*
* @param string $username
* @param bool $format
*
* @return mixed|string
*/
getMemberByUsername(username, $format = true) {
return this.request('%smembers/show.json?%s', { 'username': username }, $format);
} /**
* 根据用户 ID 获取用户信息.
*
* @param int $id
* @param bool $format
*
* @return mixed|string
*/
getMemberByID(id, $format = true) {
return this.request('%smembers/show.json?%s', { 'id': id }, $format);
}
} //暴露接口
module.exports = V2exApi;
const V2exApi = require('./V2exApi');
const $v2ex = new V2exApi();
Example:
### 获取最热主题
git源码地址:https://github.com/KelvinKey/v2ex-api
V2EX API接口地址:https://www.v2ex.com/p/7v9TEc53
End,努力做个多思考的人吧.
基于V2EX API的nodejs组件.的更多相关文章
- 微信小程序-基于高德地图API实现天气组件(动态效果)
微信小程序-基于高德地图API实现天气组件(动态效果) 在社区翻腾了许久,没有找到合适的天气插件.迫不得已,只好借鉴互联网上的web项目,手动迁移到小程序中使用.现在分享到互联网社区中,帮助后续有 ...
- 基于.Net平台常用的组件和框架整理
转载自:http://www.cnblogs.com/hgmyz/p/5313983.html 基于转载进行补充 RPC框架: RPC:远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而 ...
- 饿了么基于Vue2.0的通用组件开发之路(分享会记录)
Element:一套通用组件库的开发之路 Element 是由饿了么UED设计.饿了么大前端开发的一套基于 Vue 2.0 的桌面端组件库.今天我们要分享的就是开发 Element 的一些心得. 官网 ...
- 基于 bootstrap 的 vue 分页组件
申手党点这里下载示例 基于 bootstrap 的 vue 分页组件,我想会有那么一部分同学,在使用Vue的时候不使用单文件组件,因为不架设 NodeJS 服务端.那么网上流传的 *.vue 的各种分 ...
- 五种开源API网关实现组件对比
五种开源API网关实现组件对比 API 网关一些实现 使用一个组件时,尤其是这种比较流行的架构,组件肯定存在开源的,我们不必自己去从零开始去实现一个网关,自己开发一个网关的工作量是相当可观的, ...
- 基于SqlSugar的开发框架循序渐进介绍(13)-- 基于ElementPlus的上传组件进行封装,便于项目使用
在我们实际项目开发过程中,往往需要根据实际情况,对组件进行封装,以更简便的在界面代码中使用,在实际的前端应用中,适当的组件封装,可以减少很多重复的界面代码,并且能够非常简便的使用,本篇随笔介绍基于El ...
- 一个技术汪的开源梦 —— 基于 .Net Core 的公共组件之 Http 请求客户端
一个技术汪的开源梦 —— 目录 想必大家在项目开发的时候应该都在程序中调用过自己内部的接口或者使用过第三方提供的接口,咱今天不讨论 REST ,最常用的请求应该就是 GET 和 POST 了,那下面开 ...
- 基于vue2.0的分页组件开发
今天安排的任务是写基于vue2.0的分页组件,好吧,我一开始是觉得超级简单的,但是越写越写不出来,写的最后乱七八糟的都不知道下句该写什么了,所以重新捋了思路,小结一下- 首先写组件需要考虑: 要从父组 ...
- Atitit 游戏的通常流程 attilax 总结 基于cocos2d api
Atitit 游戏的通常流程 attilax 总结 基于cocos2d api 加载音效1 加载页面1 添加精灵1 设置随机位置2 移动2 垃圾gc2 点击evt2 爆炸效果3 定时生成精灵3 加载音 ...
随机推荐
- hadoop之hbase基本操作
hbase shell 进入hbase命令行 list 显示HBASE表 status 系统上运行的服务器的细节和系统的状态 version 返回HBase系统使用的版本 table_help 引导如 ...
- ZooKeeper学习第六期---ZooKeeper机制架构(转)
转载来源:https://www.cnblogs.com/sunddenly/p/4133784.html 一.ZooKeeper权限管理机制 1.1 权限管理ACL(Access Control L ...
- HBase —— 集群环境搭建
一.集群规划 这里搭建一个3节点的HBase集群,其中三台主机上均为Regin Server.同时为了保证高可用,除了在hadoop001上部署主Master服务外,还在hadoop002上部署备用的 ...
- MySQL下的DB Link
前言: 在实际工作中,我们可能会遇到需要操作其他数据库实例的部分表,但又不想系统连接多库.此时我们就需要用到数据表映射.如同Oracle中的DBlink一般,使用过Oracle DBlink数据库链接 ...
- shell遍历文件
取文件每行的数据,需要按列取 可以 sed 加管道 使用 awk 取列 platform="list.txt" line=`grep -vc '^$' $platform` ; ...
- esxi开启SSH
- SPOJ INTSUB - Interesting Subset(数学)
http://www.spoj.com/problems/INTSUB/en/ 题意:给定一个集合,该集合由1,2,3....2n组成,n是一个整数.问该集合中有趣子集的数目,答案mod1e9+7. ...
- 分享常见的HTTP状态码
本内容摘抄自RUNOOB.COM 当浏览一个网页时,浏览器会向网页所在服务器发出请求.当浏览器确定接收并显示网页之前,此网页所在的服务器会返回一个含有HTTP状态码(HTTP Status Code) ...
- 我是这样理解--SVM,不需要繁杂公式的那种!(附代码)
1. 讲讲SVM 1.1 一个关于SVM的童话故事 支持向量机(Support Vector Machine,SVM)是众多监督学习方法中十分出色的一种,几乎所有讲述经典机器学习方法的教材都会介绍.关 ...
- 屏蔽谷歌浏览器"请停用以开发者模式运行的扩展程序"提示
目标: 对于强迫症患者那是相当难受~~~ 解决方案: 1:进入chrome://extensions/ 右上角开启开发者模式 点击打包扩展程序: 2:扩展程序目录为选择插件(*.crx解压后)的根目录 ...