Updated on 2024-01-26 GMT+08:00

JavaScript

Scenarios

To use JavaScript to call an API through App authentication, obtain the JavaScript SDK, create a project, and then call the API by referring to the API calling example.

The JavaScript SDK supports two operating environments: Node.js and browsers. This section uses Node.js as an example.

Prerequisites

  • You have obtained API calling information. For details, see Preparations.
  • You have installed the development tool and JavaScript development environment. For details, see Preparations.
    • After Node.js is installed, run the npm command to install the moment and moment-timezone modules.
      npm install moment --save
      npm install moment-timezone --save
    • You have installed the Node.js plug-in on IntelliJ IDEA. Otherwise, install it according to Figure 1.
      Figure 1 Installing the Node.js plug-in
  • The browser must be Chrome 89.0 or later.

Obtaining the SDK

Old version: Log in to the ROMA Connect console, choose API Connect > API Calling > SDKs, and download the SDK.

New version: Log in to the ROMA Connect console, choose API Connect > Credentials > SDKs, and download the SDK.

The following shows the directory structure after the decompression.

Name

Description

signer.js

SDK code

node_demo.js

Node.js sample code

demo.html

Browser sample code

demo_require.html

Browser sample code (loaded using require)

test.js

Test Cases

js\hmac-sha256.js

Dependencies

licenses\license-crypto-js

Third-party licenses

licenses\license-node

Creating a Project

  1. Start IntelliJ IDEA and choose File > New > Project.

    In the New Project dialog box, choose Static Web and click Next.

    Figure 2 New Project
  2. Click ..., select the directory where the SDK is decompressed, and click Finish.
    Figure 3 Selecting the SDK directory after decompression
  3. View the directory structure of the project.
    Figure 4 Directory structure of the new project
    • node_demo.js: Sample code in Node.js. Modify the parameters in the sample code as required. For details about the sample code, see API Calling Example (Node.js).
    • demo.html: Browser sample code. Modify the parameters in the sample code as required. For details about the sample code, see API Calling Example (Browser).
  4. Click Edit Configurations.
    Figure 5 Edit Configurations
  5. Click + and select Node.js.
    Figure 6 Selecting Node.js
  6. Set JavaScript file to node_demo.js and click OK.
    Figure 7 Selecting node_demo.js

API Calling Example (Node.js)

  1. Import signer.js to your project.
    var signer = require('./signer')
    var http = require('http')
  2. Generate a signer and enter the key and secret of the authorized credential. For details about how to obtain the information, see Obtaining API Calling Information.
    var sig = new signer.Signer()
    // Directly writing AK/SK in code is risky. For security, encrypt your AK/SK and store them in the configuration file or environment variables. 
    // In this example, the AK/SK are stored in environment variables for identity authentication. Before running this example, set environment variables HUAWEICLOUD_SDK_AK and HUAWEICLOUD_SDK_SK. 
    sig.Key = process.env.HUAWEICLOUD_SDK_AK
    sig.Secret = process.env.HUAWEICLOUD_SDK_SK
  3. Generate a request, and specify the method, request URL, and body. For details about how to obtain the information, see Obtaining API Calling Information.
    var r = new signer.HttpRequest("POST", "c967a237-cd6c-470e-906f-a8655461897e.apigw.exampleRegion.com/app1?a=1");
    r.body = '{"a":1}'
  4. Add the x-stage header to the request to specify the environment. Add other headers to sign as required.
    r.headers = { "x-stage":"RELEASE" }
  5. Execute the following function to generate HTTP(S) request parameters, and add the X-Sdk-Date and Authorization headers for signing the request:
    var opts = sig.Sign(r)
  6. Access the API and view the access result. If you access the API using HTTPS, change http.request to https.request.
    var req=http.request(opts, function(res){
            console.log(res.statusCode)  
            res.on("data",	function(chunk){
    		console.log(chunk.toString())
    	})
    })
    req.on("error",function(err){
    	console.log(err.message)
    })
    req.write(r.body)
    req.end()

API Calling Example (Browser)

To use a browser to access APIs, you need to register an API that supports the OPTIONS method. For details, see Creating an API in OPTIONS Mode. The response header contains Access-Control-Allow-* headers. You can add these headers by enabling CORS when creating an API.

  1. Import signer.js and dependencies to the HTML page.
    <script src="js/hmac-sha256.js"></script>
    <script src="js/moment.min.js"></script>
    <script src="js/moment-timezone-with-data.min.js"></script>
    <script src='signer.js'></script>
  2. Sign the request and access the API.
    var sig = new signer.Signer()
    sig.Key = process.env.HUAWEICLOUD_SDK_AK
    sig.Secret = process.env.HUAWEICLOUD_SDK_SK
    var r= new signer.HttpRequest()
    r.host = "c967a237-cd6c-470e-906f-a8655461897e.apigw.exampleRegion.com"
    r.method = "POST"
    r.uri = "/app1"
    r.body = '{"a":1}'
    r.query = { "a":"1","b":"2" }
    r.headers = { "Content-Type":"application/json" }
    var opts = sig.Sign(r)
    var scheme = "https"
    $.ajax({
    	type: opts.method,
    	data: req.body,
    	processData: false,
    	url: scheme + "://" + opts.hostname + opts.path,
    	headers: opts.headers,
    	success: function (data) {
    		$('#status').html('200')
    		$('#recv').html(data)
    	},
    	error: function (resp) {
    		if (resp.readyState === 4) {
    			$('#status').html(resp.status)
    			$('#recv').html(resp.responseText)
    		} else {
    			$('#status').html(resp.state())
    		}
    	},
    	timeout: 1000
    });