gcp-api-client

1.1.0 • Public • Published

gcp-api-client

REST API client for Google Cloud Platform services. Not a replacement for the client libraries available from Google.

This package merely exposes some of the functionalities of the @google-cloud/common package to facilitate the use for simple API requests.

If you want to use this client from a local shell, you must have the Google Cloud SDK installed to enable authentication. Refer to the gcloud auth documentation for info on how to managed OAuth2 credentials.

Overview

const apiClient = require('gcp-api-client');
 
const client =  apiClient({
  baseUrl: 'https://cloudfunctions.googleapis.com',
  scopes: 'https://www.googleapis.com/auth/cloudfunctions'
});
 
client.get('/v1/projects/{{projectId}}/locations/-/functions', (error, response) => {
  // Process response
});

All the request methods can either be invoked with callbacks (as in the example above) or return promises:

client.get('/v1/projects/{{projectId}}/locations/-/functions').then(processResponse);
async function makeRequest() {
  let response = await client.get('/v1/projects/{{projectId}}/locations/-/functions');
}

Once instantiated, the client can be used for multiple subsequent requests:

const client = require('gcp-api-client')();
 
async function makeRequests() {
  let response1 = await client.get('/storage/v1/b/my-bucket/o');
 
  let data = {
    query: { uploadType: 'multipart' },
    json: { name: 'my-object' },
    file: './picture.jpg'
  };
 
  let response2 = await client.post('/upload/storage/v1/b/my-bucket/o', data);
}

Installation

npm install gcp-api-client --save

Usage

The API client is instantiated as follows:

const apiClient = require('gcp-api-client');
 
const client = apiClient(options);

If present, options must be an object with following properties:

Property Description
baseUrl OPTIONAL - String; default value is https://www.googleapis.com
scopes OPTIONAL - String or array of strings; must be appropriate for the service endpoint that is intended to be called; default value is https://www.googleapis.com/auth/cloud-platform
pathParams OPTIONAL - Object; each key/value pair represents a path parameter and its replacement string (see details below)

Once the API client has been instantiated, requests are made through the following methods:

client.post(path[, options][, callback])

Initiates a POST request. path specifies the request path (relative to the baseUrl configured for the client). Must be a string starting with /. May contain parameters marked with double braces (see details below).

If present, callback must be a function that expects (error, response) as input parameters. Otherwise, if callback is not present, then client.post() returns a promise to resolve response or to catch error.

If present, options must be an object with the following properties:

Property Description
query OPTIONAL - Object; if present, a query string is generated with the specified keys and values
json OPTIONAL - Object to be serialized into JSON body
form OPTIONAL - Object to be serialized into URL-encoded body
text OPTIONAL - String to be used as request body
file OPTIONAL - String; path to the file to be uploaded
type OPTIONAL - String; relevant only if file is present; MIME type of the file to be uploaded; may be omitted if file includes an extension that indicates the actual MIME type
headers OPTIONAL - Object; headers to be added to the request; there is no need to specify the accept header or the content-type header since they are automatically generated

The following combinations of json, form, text and file are supported:

json form text file
x The content-type header is set to application/json and the json object is used as body after serialization
x The content-type header is set to application/x-www-form-urlencoded and the form object is used as body after serialization
x The content-type header is set to text/plain and the text string is used as body
x The content-type header is set to the value specified by type or derived from the extension of file if type is omitted; the content of file is streamed as body
x x The content-type header is set to multipart/related; the first part has application/json body; the second part has text/plain body
x x The content-type header is set to multipart/related; the first part has application/json body; the second part has content type set to the value specified by type or derived from the extension of file if type is omitted

response is an object obtained by parsing the JSON response returned by the server.

Only API calls that return JSON body are supported.

client.get(path[, options][, callback])

Same as client.post() above, but for GET requests. Body is never sent with GET requests.

client.put(path[, options][, callback])

Same as client.post() above, but for PUT requests.

client.patch(path[, options][, callback])

Same as client.post() above, but for PATCH requests.

client.delete(path[, options][, callback])

Same as client.post() above, but for DELETE requests. Body is never sent with DELETE requests.

Use of path parameters

One or more path parameters can be specified when the client is instantiated. Example:

const apiClient = require('gcp-api-client');
 
const client =  apiClient({
  pathParams: { bucket: 'my-bucket', location: 'us' }
});

The specified parameters are automatically inserted in the request path when the client is used to initiate a request. Double braces are used to mark the parameters:

client.get('/storage/v1/b/{{bucket}}/o').then(processResponse);

The above request is equivalent to:

client.get('/storage/v1/b/my-bucket/o').then(processResponse);

The {{projectId}} parameter has a special treatment. It can be used in the request path even if not specified when the client is instantiated. When this is the case, {{projectId}} is replaced with the default project for the environment.

Limitations

Some of the error messages returned by the @google-cloud/common package are too succinct to be useful. For example, the absence of a mandatory request parameter may result in an error with just Required as message. In those cases, you may want to inspect the error.response object that contains the complete response returned by the server.

Package Sidebar

Install

npm i gcp-api-client

Weekly Downloads

0

Version

1.1.0

License

MIT

Unpacked Size

12.9 kB

Total Files

4

Last publish

Collaborators

  • teifip