1
0

More than 1 year has passed since last update.

Azure Functions (Node.JS) からの http リクエスト (GET|POST) で async/await を適用する

Last updated at Posted at 2022-08-18

Azure Functions (Node.JS) で fetch が使えない?

Rest API に GET|POST したいので、fetch を使おうとしたら動かない? ということで調べたら、Node.JS(v16) では module として利用できないので NG と...。

公式ドキュメント: Azure Functions の JavaScript 開発者向けガイド を見てみる

公式ドキュメントである Azure Functions の JavaScript 開発者向けガイド には、JavaScript Function に関する考慮事項 として async と await を使用する と記載されています(参照)。

推奨方法として、util.promisify を使う方法が掲載されています。

request と util を使って書く 【結論】

ドキュメントのサンプルに則り、util モジュールを使って非同期に (かつ try&catch で例外処理を組み込んで) 書いてみます。request と util を使って動いた!という情報を踏襲して、書いてみた&動いたものがこちら。

index.js
const util = require ('util');
const request  = require ('request');
const requestPromise = util.promisify(request);

//http trigger function
module.exports = async function (context) {

try
{
    var response = await requestPromise(
        {  
            method: 'POST',
            url: 'https://example.com/postapi', //目的のURLに変更
            headers: {
                    'Content-Type': 'application/json'
                    //必要なヘッダーを適時追加
                },
            body: JSON.stringify({ "id":"xxxxx", "name":"annie" }) //お好みのフォーマットで
        }
    );
    context.res = {
        status: 200,
        body: response.body
    };   
}
catch
{
    //例外処理を記載。例えば:
    context.res = {
        status: 400,
        body: 'Http POST request error!'
    };   
}

実際の利用例

今回試した環境

  • OS: Windows 11
  • Node.js: 16.13.2
  • Visual Studio Code 1.70.2
    • Azure Functions for Visual Studio Code 1.7.4
  • Azure Function 4.x
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0