# request.js
**Repository Path**: mirrors_bitinn/request.js
## Basic Information
- **Project Name**: request.js
- **Description**: Send parameterized requests to GitHub’s APIs with sensible defaults in browsers and Node
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2020-09-24
- **Last Updated**: 2026-03-21
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# request.js
> Send parameterized requests to GitHub’s APIs with sensible defaults in browsers and Node
[](https://www.npmjs.com/package/@octokit/request)
[](https://travis-ci.org/octokit/request.js)
[](https://coveralls.io/github/octokit/request.js)
[](https://greenkeeper.io/)
`@octokit/request` is a request library for browsers & node that makes it easier
to interact with [GitHub’s REST API](https://developer.github.com/v3/) and
[GitHub’s GraphQL API](https://developer.github.com/v4/guides/forming-calls/#the-graphql-endpoint).
It uses [`@octokit/endpoint`](https://github.com/octokit/endpoint.js) to parse
the passed options and sends the request using [fetch](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)
([node-fetch](https://github.com/bitinn/node-fetch) in Node).
- [Usage](#usage)
* [Node](#node)
* [Browser](#browser)
* [REST API example](#rest-api-example)
* [GraphQL example](#graphql-example)
* [Alternative: pass `method` & `url` as part of options](#alternative-pass-method--url-as-part-of-options)
- [octokitRequest()](#octokitrequest)
- [`octokitRequest.defaults()`](#octokitrequestdefaults)
- [`octokitRequest.endpoint`](#octokitrequestendpoint)
- [Special cases](#special-cases)
* [The `data` parameter – set request body directly](#the-data-parameter-%E2%80%93-set-request-body-directly)
* [Set parameters for both the URL/query and the request body](#set-parameters-for-both-the-urlquery-and-the-request-body)
- [LICENSE](#license)
## Usage
### Node
Install with `npm install @octokit/request`.
```js
const octokitRequest = require('@octokit/request')
```
### Browser
1. Download `octokit-request.min.js` from the latest release: https://github.com/octokit/request.js/releases
2. Load it as script into your web application:
```html
```
3. The `octokitRequest` is now available
### REST API example
```js
// Following GitHub docs formatting:
// https://developer.github.com/v3/repos/#list-organization-repositories
const result = await octokitRequest('GET /orgs/:org/repos', {
headers: {
authorization: 'token 0000000000000000000000000000000000000001'
},
org: 'octokit',
type: 'private'
})
console.log(`${result.data.length} repos found.`)
```
### GraphQL example
```js
const result = await octokitRequest('POST /graphql', {
headers: {
authorization: 'token 0000000000000000000000000000000000000001'
},
query: `query ($login: String!) {
organization(login: $login) {
repositories(privacy: PRIVATE) {
totalCount
}
}
}`,
variables: {
login: 'octokit'
}
})
```
### Alternative: pass `method` & `url` as part of options
Alternatively, pass in a method and a url
```js
const result = await octokitRequest({
method: 'GET',
url: '/orgs/:org/repos',
headers: {
authorization: 'token 0000000000000000000000000000000000000001'
},
org: 'octokit',
type: 'private'
})
```
## octokitRequest()
`octokitRequest(route, options)` or `octokitRequest(options)`.
**Options**
|
name
|
type
|
description
|
route
|
String
|
If route is set it has to be a string consisting of the request method and URL, e.g. GET /orgs/:org
|
options.baseUrl
|
String
|
Required. Any supported http verb, case insensitive. Defaults to https://api.github.com.
|
options.headers
|
Object
|
Custom headers. Passed headers are merged with defaults:
headers['user-agent'] defaults to octokit-rest.js/1.2.3 (where 1.2.3 is the released version).
headers['accept'] defaults to application/vnd.github.v3+json.
|
options.method
|
String
|
Required. Any supported http verb, case insensitive. Defaults to Get.
|
options.url
|
String
|
Required. A path or full URL which may contain :variable or {variable} placeholders,
e.g. /orgs/:org/repos. The url is parsed using url-template.
|
options.data
|
Any
|
Set request body directly instead of setting it to JSON based on additional parameters. See "The `data` parameter" below.
|
options.request
|
Object
|
Pass node-fetch extensions options, such as agent or timeout. All other `options.request.*` keys will be ignored.
|
All other options will passed depending on the `method` and `url` options.
1. If the option key is a placeholder in the `url`, it will be used as replacement. For example, if the passed options are `{url: '/orgs/:org/repos', org: 'foo'}` the returned `options.url` is `https://api.github.com/orgs/foo/repos`
2. If the `method` is `GET` or `HEAD`, the option is passed as query parameter
3. Otherwise the parameter is passed in the request body as JSON key.
**Result**
`octokitRequest` returns a promise and resolves with 3 keys
|
key
|
type
|
description
|
headers |
Object |
All response headers |
code |
Integer |
Response status code |
data |
Any |
The response body as returned from server. If the response is JSON then it will be parsed into an object |
## `octokitRequest.defaults()`
Override or set default options. Example:
```js
const myOctokitRequest = require('@octokit/request').defaults({
baseUrl: 'https://github-enterprise.acme-inc.com/api/v3',
headers: {
'user-agent': 'myApp/1.2.3',
authorization: `token 0000000000000000000000000000000000000001`
},
org: 'my-project',
per_page: 100
})
myOctokitRequest(`GET /orgs/:org/repos`)
```
You can call `.defaults()` again on the returned method, the defaults will cascade.
```js
const myProjectRequest = octokitRequest.defaults({
baseUrl: 'https://github-enterprise.acme-inc.com/api/v3',
headers: {
'user-agent': 'myApp/1.2.3'
},
org: 'my-project'
})
const myProjectRequestWithAuth = myProjectRequest.defaults({
headers: {
authorization: `token 0000000000000000000000000000000000000001`
}
})
```
`myProjectRequest` now defaults the `baseUrl`, `headers['user-agent']`,
`org` and `headers['authorization']` on top of `headers['accept']` that is set
by the global default.
## `octokitRequest.endpoint`
See https://github.com/octokit/endpoint.js. Example
```js
const options = octokitRequest.endpoint('GET /orgs/:org/repos', {
org: 'my-project',
type: 'private'
})
// {
// method: 'GET',
// url: 'https://api.github.com/orgs/my-project/repos?type=private',
// headers: {
// accept: 'application/vnd.github.v3+json',
// authorization: 'token 0000000000000000000000000000000000000001',
// 'user-agent': 'octokit/endpoint.js v1.2.3'
// }
// }
```
All of the [`@octokit/endpoint`](https://github.com/octokit/endpoint.js) API can be used:
- [`ocotkitRequest.endpoint()`](#endpoint)
- [`ocotkitRequest.endpoint.defaults()`](#endpointdefaults)
- [`ocotkitRequest.endpoint.merge()`](#endpointdefaults)
- [`ocotkitRequest.endpoint.parse()`](#endpointmerge)
## Special cases
### The `data` parameter – set request body directly
Some endpoints such as [Render a Markdown document in raw mode](https://developer.github.com/v3/markdown/#render-a-markdown-document-in-raw-mode) don’t have parameters that are sent as request body keys, instead the request body needs to be set directly. In these cases, set the `data` parameter.
```js
const options = endpoint('POST /markdown/raw', {
data: 'Hello world github/linguist#1 **cool**, and #1!',
headers: {
accept: 'text/html;charset=utf-8',
'content-type': 'text/plain'
}
})
// options is
// {
// method: 'post',
// url: 'https://api.github.com/markdown/raw',
// headers: {
// accept: 'text/html;charset=utf-8',
// 'content-type': 'text/plain',
// 'user-agent': userAgent
// },
// body: 'Hello world github/linguist#1 **cool**, and #1!'
// }
```
### Set parameters for both the URL/query and the request body
There are API endpoints that accept both query parameters as well as a body. In that case you need to add the query parameters as templates to `options.url`, as defined in the [RFC 6570 URI Template specification](https://tools.ietf.org/html/rfc6570).
Example
```js
octokitRequest('POST https://uploads.github.com/repos/octocat/Hello-World/releases/1/assets{?name,label}', {
name: 'example.zip',
label: 'short description',
headers: {
'content-type': 'text/plain',
'content-length': 14,
authorization: `token 0000000000000000000000000000000000000001`
},
data: 'Hello, world!'
})
```
## LICENSE
[MIT](LICENSE)