@aboveyou00/github 中文文档教程

发布于 7年前 浏览 19 项目主页 更新于 3年前

node-github

构建状态覆盖状态Greenkeepernpm< /a>

GitHub API 的 Node.js 包装器。

Installation

通过 npm 安装。

npm install github

或者通过 git clone 安装:

git clone https://github.com/octokit/node-github
cd node-github
npm install

Documentation

客户端 API:octokit.github.io/node-github GitHub API:developer.github.com/v3

Example

获取用户“defunkt”的所有关注者:

var GitHubApi = require('github')

var github = new GitHubApi({
    // optional
  debug: true,
  Promise: require('bluebird'),
  timeout: 5000,
  host: 'github.my-GHE-enabled-company.com', // should be api.github.com for GitHub
  pathPrefix: '/api/v3', // for some GHEs; none for GitHub
  protocol: 'https',
  port: 9898,
  proxy: '<proxyUrl>',
  ca: 'whatever',
  headers: {
    'accept': 'application/vnd.github.something-custom',
    'cookie': 'something custom',
    'user-agent': 'something custom'
  },
  requestMedia: 'application/vnd.github.something-custom',
  followRedirects: false, // default: true; there's currently an issue with non-get redirects, so allow disabling follow-redirects
  rejectUnauthorized: false, // default: true
  family: 6
})

// TODO: optional authentication here depending on desired endpoints. See below in README.

github.users.getFollowingForUser({
    // optional
    // headers: {
    //     "cookie": "blahblah"
    // },
  username: 'defunkt'
}, function (err, res) {
  if (err) throw err
  console.log(JSON.stringify(res))
})

Pagination

有一些与分页相关的方法:

hasNextPage(link)
hasPreviousPage(link)
hasFirstPage(link)
hasLastPage(link)

getNextPage(link, headers, callback)
getPreviousPage(link, headers, callback)
getFirstPage(link, headers, callback)
getLastPage(link, headers, callback)

NOTE: link is the response object or the contents of the Link header

参见此处此处 示例。

Authentication

大多数 GitHub API 调用不需要身份验证。 根据经验:如果您可以在未登录的情况下通过访问该站点来查看信息,则您无需经过身份验证即可通过 API 检索相同的信息。 当然,更改数据或读取敏感信息的调用必须经过身份验证。

您需要 GitHub 用户名和 API 密钥进行身份验证。 API 密钥可以在用户的​​帐户设置中找到。

// basic
github.authenticate({
  type: 'basic',
  username: process.env.USERNAME,
  password: process.env.PASSWORD
})

// oauth
github.authenticate({
  type: 'oauth',
  token: process.env.AUTH_TOKEN
})

// oauth key/secret (to get a token)
github.authenticate({
  type: 'oauth',
  key: process.env.CLIENT_ID,
  secret: process.env.CLIENT_SECRET
})

// user token
github.authenticate({
  type: 'token',
  token: 'userToken'
})

// integration (jwt)
github.authenticate({
  type: 'integration',
  token: 'jwt'
})

// ~/.netrc
github.authenticate({
  type: 'netrc'
})

注意:authenticate 是同步的,因为它只存储 下一个请求的凭据。

Creating a token for your application

创建新授权

  1. Use github.authenticate() to authenticate with GitHub using your username / password.
  2. Create an application token programmatically with the scopes you need and, if you use two-factor authentication send the X-GitHub-OTP header with the one-time-password you get on your token device.
github.authorization.create({
  scopes: ['user', 'public_repo', 'repo', 'repo:status', 'gist'],
  note: 'what this auth is for',
  note_url: 'http://url-to-this-auth-app',
  headers: {
    'X-GitHub-OTP': 'two-factor-code'
  }
}, function (err, res) {
  if (err) throw err
  if (res.token) {
    // save and use res.token as in the Oauth process above from now on
  }
})

Create test auth file

为运行测试/示例创建测试授权文件。

$ > testAuth.json
{
    "token": "<TOKEN>"
}

Promises

要使用 bluebird,请参阅此处。 要使用 Q,请参阅此处

Tests

运行所有测试

$ npm test

或运行特定测试

$ npm test test/issuesTest.js

Preview APIs

预览 API 的接受标头应在幕后处理,但如果预览端点无法正常工作,请参阅 此处 有关如何添加所需的自定义接受标头的示例。

有关预览中端点的更新,请参阅 https://developer.github.com/changes/。

Preview APIAccept header val
Blocking Usersapplication/vnd.github.giant-sentry-fist-preview+json
Codes of Conductapplication/vnd.github.scarlet-witch-preview+json
Commit Searchapplication/vnd.github.cloak-preview+json
Communityapplication/vnd.github.black-panther-preview+json
Deploymentapplication/vnd.github.ant-man-preview+json
Git signingapplication/vnd.github.cryptographer-preview
Importsapplication/vnd.github.barred-rock-preview
Integrationsapplication/vnd.github.machine-man-preview
Licenseapplication/vnd.github.drax-preview+json
Marketplaceapplication/vnd.github.valkyrie-preview+json
Migrationsapplication/vnd.github.wyandotte-preview+json
Nested Teamsapplication/vnd.github.hellcat-preview+json
Pagesapplication/vnd.github.mister-fantastic-preview
Pre-receiveapplication/vnd.github.eye-scream-preview
Projectsapplication/vnd.github.inertia-preview+json
Pull Request Squashapplication/vnd.github.polaris-preview
Reactionsapplication/vnd.github.squirrel-girl-preview
Review Requestsapplication/vnd.github.thor-preview+json
Star Creation Timestampapplication/vnd.github.v3.star+json
Timelineapplication/vnd.github.mockingbird-preview
Topicsapplication/vnd.github.mercy-preview+json

Dev notes

更新 github 页面的 apidoc:

$ npm install apidoc -g
$ apidoc -i doc/ -o apidoc/

提醒一下,因为 ad-hoc 过滤器被添加到 apidoc,所以不要覆盖 index.html、main.js。

LICENSE

麻省理工学院执照。 有关详细信息,请参阅许可证文件。

node-github

Build StatusCoverage StatusGreenkeepernpm

A Node.js wrapper for GitHub API.

Installation

Install via npm.

npm install github

or install via git clone:

git clone https://github.com/octokit/node-github
cd node-github
npm install

Documentation

Client API: octokit.github.io/node-github GitHub API: developer.github.com/v3

Example

Get all followers for user "defunkt":

var GitHubApi = require('github')

var github = new GitHubApi({
    // optional
  debug: true,
  Promise: require('bluebird'),
  timeout: 5000,
  host: 'github.my-GHE-enabled-company.com', // should be api.github.com for GitHub
  pathPrefix: '/api/v3', // for some GHEs; none for GitHub
  protocol: 'https',
  port: 9898,
  proxy: '<proxyUrl>',
  ca: 'whatever',
  headers: {
    'accept': 'application/vnd.github.something-custom',
    'cookie': 'something custom',
    'user-agent': 'something custom'
  },
  requestMedia: 'application/vnd.github.something-custom',
  followRedirects: false, // default: true; there's currently an issue with non-get redirects, so allow disabling follow-redirects
  rejectUnauthorized: false, // default: true
  family: 6
})

// TODO: optional authentication here depending on desired endpoints. See below in README.

github.users.getFollowingForUser({
    // optional
    // headers: {
    //     "cookie": "blahblah"
    // },
  username: 'defunkt'
}, function (err, res) {
  if (err) throw err
  console.log(JSON.stringify(res))
})

Pagination

There are a few pagination-related methods:

hasNextPage(link)
hasPreviousPage(link)
hasFirstPage(link)
hasLastPage(link)

getNextPage(link, headers, callback)
getPreviousPage(link, headers, callback)
getFirstPage(link, headers, callback)
getLastPage(link, headers, callback)

NOTE: link is the response object or the contents of the Link header

See here and here for examples.

Authentication

Most GitHub API calls don't require authentication. As a rule of thumb: If you can see the information by visiting the site without being logged in, you don't have to be authenticated to retrieve the same information through the API. Of course calls, which change data or read sensitive information have to be authenticated.

You need the GitHub user name and the API key for authentication. The API key can be found in the user's Account Settings.

// basic
github.authenticate({
  type: 'basic',
  username: process.env.USERNAME,
  password: process.env.PASSWORD
})

// oauth
github.authenticate({
  type: 'oauth',
  token: process.env.AUTH_TOKEN
})

// oauth key/secret (to get a token)
github.authenticate({
  type: 'oauth',
  key: process.env.CLIENT_ID,
  secret: process.env.CLIENT_SECRET
})

// user token
github.authenticate({
  type: 'token',
  token: 'userToken'
})

// integration (jwt)
github.authenticate({
  type: 'integration',
  token: 'jwt'
})

// ~/.netrc
github.authenticate({
  type: 'netrc'
})

Note: authenticate is synchronous because it only stores the credentials for the next request.

Creating a token for your application

Create a new authorization.

  1. Use github.authenticate() to authenticate with GitHub using your username / password.
  2. Create an application token programmatically with the scopes you need and, if you use two-factor authentication send the X-GitHub-OTP header with the one-time-password you get on your token device.
github.authorization.create({
  scopes: ['user', 'public_repo', 'repo', 'repo:status', 'gist'],
  note: 'what this auth is for',
  note_url: 'http://url-to-this-auth-app',
  headers: {
    'X-GitHub-OTP': 'two-factor-code'
  }
}, function (err, res) {
  if (err) throw err
  if (res.token) {
    // save and use res.token as in the Oauth process above from now on
  }
})

Create test auth file

Create test auth file for running tests/examples.

$ > testAuth.json
{
    "token": "<TOKEN>"
}

Promises

For using bluebird, see here. For using Q, see here.

Tests

Run all tests

$ npm test

Or run a specific test

$ npm test test/issuesTest.js

Preview APIs

Accept headers for the preview APIs should be taken care of behind the scenes, but in the event a preview endpoint isn't working, see here for an example on how to add the required custom accept header.

For updates on endpoints under preview, see https://developer.github.com/changes/.

Preview APIAccept header val
Blocking Usersapplication/vnd.github.giant-sentry-fist-preview+json
Codes of Conductapplication/vnd.github.scarlet-witch-preview+json
Commit Searchapplication/vnd.github.cloak-preview+json
Communityapplication/vnd.github.black-panther-preview+json
Deploymentapplication/vnd.github.ant-man-preview+json
Git signingapplication/vnd.github.cryptographer-preview
Importsapplication/vnd.github.barred-rock-preview
Integrationsapplication/vnd.github.machine-man-preview
Licenseapplication/vnd.github.drax-preview+json
Marketplaceapplication/vnd.github.valkyrie-preview+json
Migrationsapplication/vnd.github.wyandotte-preview+json
Nested Teamsapplication/vnd.github.hellcat-preview+json
Pagesapplication/vnd.github.mister-fantastic-preview
Pre-receiveapplication/vnd.github.eye-scream-preview
Projectsapplication/vnd.github.inertia-preview+json
Pull Request Squashapplication/vnd.github.polaris-preview
Reactionsapplication/vnd.github.squirrel-girl-preview
Review Requestsapplication/vnd.github.thor-preview+json
Star Creation Timestampapplication/vnd.github.v3.star+json
Timelineapplication/vnd.github.mockingbird-preview
Topicsapplication/vnd.github.mercy-preview+json

Dev notes

To update the apidoc for github pages:

$ npm install apidoc -g
$ apidoc -i doc/ -o apidoc/

Just a reminder, since an ad-hoc filter was added to the apidoc, don't overwrite index.html, main.js.

LICENSE

MIT license. See the LICENSE file for details.

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文