TypeScript + node.js + github.api, 实现github快速找到目标用户

一、TypeScript简介

1.定义

(1)Typescript = JavaScript + type + ( some other stuff )

(2)Typescript需要先被编译成Javascript,而后才能使用

2.demo

安装typescript:

  • npm install typescript –g
  • tsc index.ts

index.ts:

var fn = () => ‘response’

command line:

tsc init

修改tsconfig.json的outDir和rootDir,并增添out目录与src目录
修改package.json的scripts为"start": "tsc && node out/index.js"
运行npm start

结果如下:

此时,src里的index.ts已经被编译至index.js中

index.js:

var fn = function () { return ‘response’; }

二、项目实现

1.需求

在node环境下,使用ts语言,借用gituhub的api实现对用户的关键信息查询功能

2.目录

3.安装库

(1)request库

npm i @types/request --save-dev
npm i request –save

(2)lodash库(用于排序)

npm i @types/lodash --save-dev
npm install lodash --save-dev

4.内容

index.ts

import { GithubApiService } from ‘./GithubApiService‘
import { User } from ‘./User‘
import { Repo } from ‘./Repo‘;
import * as ld from ‘lodash‘;

// node.js内置功能,用于获取第三个参数内容
console.log(process.argv[2])

let svc: GithubApiService = new GithubApiService();

if (process.argv.length < 3) {
    console.log("请输入用户名");
} else {
    svc.getUserInfo("bbcfive", (user: User) => {
        svc.getRepos(user.login, (repos: Repo[]) => {
            // 按照fork的数量由小到大排列 ps:返回值 * -1 代表由大到小排列
            let sortedRepos = ld.sortBy(repos, [(repo: Repo) => repo.forks_count]);
            user.repos = sortedRepos;
            console.log(user);
        })
    });
}

GithubApiService.ts

import * as request from ‘request‘
import { User } from ‘./User‘;
import { Repo } from ‘./Repo‘;

const options = {
    headers: {
        ‘User-Agent‘: ‘request‘
    },
    json: true
}

export class GithubApiService {
    getUserInfo(userName:string, callBack: (user: User) => any) {
        request.get("http://api.github.com/users/" + userName, options, (error: any, response: any, body: any) => {
            // 写法一
            // let user = new User(JSON.parse(body)); // typeof body == object
            // 写法二
            let user: User = new User(body); // typeof body == string
            callBack(user);
        })
    }

    getRepos(userName:string, callBack: (repos: Repo[]) => any) {
        request.get("http://api.github.com/users/" + userName + "/repos", options, (error: any, response: any, body: any) => {
            let repos: Repo[] = body.map((repo: any) => new Repo(repo));
            callBack(repos);
        })
    }
}

Repo.ts

export class Repo {
    name: string;
    description: string;
    url: string;
    size: number;
    forks_count: number;

    constructor (repo: any) {
        this.name = repo.name;
        this.description = repo.description;
        this.url = repo.html_url;
        this.size = repo.size;
        this.forks_count = repo.forks_count;
    }
}

User.js

import { Repo } from ‘./Repo‘;

export class User {
    login: string;
    fullName: string;
    repoCount: number;
    followerCount: number;
    repos: Repo[] = [];

    constructor (userResponse: any) {
        this.login = userResponse.login;
        this.fullName = userResponse.name;
        this.repoCount = userResponse.public_repos;
        this.followerCount = userResponse.followers;
    }
}

5.运行

因为在index.ts里已经使用nodeJs自带的api,process.argv对npm输入命令做了判断,所以只需要在命令行输入

npm start bbcfive // "bbcfive"是我的github用户名

终端打印结果:

可以清晰的看到此用户的github关键信息。

三、其他延展功能

给定一定量的github用户名列表,可以通过此方法循环获取每个用户的关键信息,并作筛选,来获得目标范围用户。

适用于以下场景:

1.hr招人

2.找一些很赞的项目

3.社交(毕竟是全球最大的同性交友网站~~)

—— 完 ——

原文地址:https://www.cnblogs.com/bbcfive/p/11141122.html

时间: 2024-08-30 00:30:59

TypeScript + node.js + github.api, 实现github快速找到目标用户的相关文章

编写 Node.js Rest API 的 10 个最佳实践

Node.js 除了用来编写 WEB 应用之外,还可以用来编写 API 服务,我们在本文中会介绍编写 Node.js Rest API 的最佳实践,包括如何命名路由.进行认证和测试等话题,内容摘要如下: 正确使用 HTTP Method 和路由 正确的使用 HTTP 状态码 使用 HTTP Header 来发送元数据 为 REST API 挑选合适的框架 要对 API 进行黑盒测试 使用基于 JWT 的无状态的认证机制 学会使用条件请求机制 拥抱接口调用频率限制(Rate-Limiting) 编

【转】Github 搜索技巧,快速找到好资源

原文链接:https://blog.csdn.net/luoyayun361/article/details/88374672 Github 搜索技巧,快速找到好资源 2019年03月10日 09:42:11 luoyayun361 版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/luoyayun361/article/details/88374672 前言 不得不说 GitHub 简直就

使用node.js进行API自动化回归测试

概述 传统的QA自动化测试通常是基于GUI的,比如使用Selenium,模拟用户在界面上操作.但GUI测试的开发.维护成本和运行的稳定性一直是测试界的老大难问题.投入大量的人力物力开发.维护.运行,却得不到相应的回报,令许多同行头痛不已.不过端对端(end to end)测试确实是QA/测试团队的重点工作之一,是绕不过的坎,怎么破?今天就分享一下基于API(HTTP层面)的自动化测试,姑且叫它“半端对端 (semi end to end)”吧.其实我认为它已经接近95%端对端了,为什么这样说?

[Node.js] 2、利用node-git-server快速搭建git服务器

本文用到了node-git-server 1.检测本地git版本 该包的使用需要机器上本来就安装git,且git的版本大于等于2.7: 1 ╭─[email protected] /home/workspace 2 ╰─# git --version 129 ↵ 3 git version 2.7.4 2.利用npm安装包 1 ╭─[email protected] /home/workspace 2 ╰─# npm install node-git-server 3 /home/workspa

Node.js 博客实例(四)实现用户页面和文章页面

原教程 https://github.com/nswbmw/N-blog/wiki/_pages的第四章,由于版本等的原因,在原教程基础上稍加改动即可实现. 现在,我们来给博客添加用户页面和文章页面. 所谓用户页面就是当点击某个用户名链接时,跳转到:域名/u/用户名 ,并列出该用户的所有文章. 同理,文章页面就是当点击某篇文章标题时,跳转到:域名/u/用户名/时间/文章名 ,进入到该文章的页面. post.js: 将 Post.get 修改为 Post.getAll ,同时将 index.js

基于 Koa.js 平台的 Node.js web 快速开发框架KoaHub.js demo 可安装

KoaHub.js demo KoaHub.js KoaHub.js -- 基于 Koa.js 平台的 Node.js web 快速开发框架.可以直接在项目里使用 ES6/7(Generator Function, Class, Async & Await)等特性,借助 Babel 编译,可稳定运行在 Node.js 环境上. github地址:http://github.com/einsqing/koahubjs demo 下载安装 //下载 git clone https://github.

创建Node.js TypeScript后端项目

1.安装Node.js扩展,支持TypeScript语法 npm install -g typescript 2.为TypeScript添加Node.js的API代码提示 npm install -g --save-dev @types/node 3.创建Node.js TypeScript项目 npm init 4.创建TypeScript项目配制文件,使用tsc --init,就会自动建立好一份tsconfig.json. tsc --init

快速使用node.js进行web开发

首先关于node.js的学习,这里推荐一本比较好的教程,nodejs web开发指南,该书通俗易懂地将node.js语言特性讲解完之后,又从一个项目角度带领读者使用node.js学习web开发.相信这是一个比较好的学习模式和过程.由于这本书是2012年出的,书中的一个web教学项目是开发一个微博.从2012到现在,node.js及其生态环境发生了很大改变,所以关于该书的学习如果照着书本显然是过于陈旧的.到目前为止,node.js的web开发框架已经升级到了Express4.12.1,对于Mong

Node.js API

Node.js v4.4.7 Documentation(官方文档) Buffer Prior to the introduction of TypedArray in ECMAScript 2015 (ES6), the JavaScript language had no mechanism for reading or manipulating streams of binary data(二进制数据). The Buffer class was introduced as part of