aws-api-responsebuilderProductstools

[aws-api-responsebuilder] API Gatewayのレスポンスを作るライブラリを公開しました

Serverless FrameworkやSAMでAPI Gateway + LambdaのAPIを作るとき、だいたいレスポンスをこんな感じで作ります。 このオブジェクトを毎回作るのがめんどくさくなってきたので、ビルダー […]

広告ここから
広告ここまで

Serverless FrameworkやSAMでAPI Gateway + LambdaのAPIを作るとき、だいたいレスポンスをこんな感じで作ります。

module.exports.hello = async (event, context) => {
  return {
    statusCode: 200,
    body: JSON.stringify({
      message: 'Go Serverless v1.0! Your function executed successfully!',
      input: event,
    }),
  };
};

このオブジェクトを毎回作るのがめんどくさくなってきたので、ビルダーライブラリ作りました。

使い方

npm i -S aws-api-responsebuilderでインストールできます。

あとはステータスコードとかbodyを入れていけばOKです。メソッドチェーン対応してます。

import AWSAPIs from 'aws-api-responsebuilder'

const { ResponseBuilder } = AWSAPIs
ResponseBuilder.setStatusCode(400).setBody({
    message: `Invalid Request`,
    code: 'invalid_request'
})
console.log(ResponseBuilder.getResponse())

{ statusCode: 400,
  headers:
   { 'Access-Control-Allow-Origin': '*',
     'Access-Control-Allow-Credentials': true },
  body: '{"message":"Invalid Request","code":"invalid_request"}' }

デフォルトだとCORS系のheaderもつけてますが、もちろんカスタマイズ可能です。API Document: https://hideokamoto.github.io/aws-api-responsebuilder/

その他

デフォルトのままgetResponse()すると500エラー返ってきます。なのでtry catchしてfinallyでこいつを返してやれば、事故ってもHTTP 500 / Inernal Errorを返してやるような実装ができます。

import AWSAPIs from 'aws-api-responsebuilder'
const { ResponseBuilder } = AWSAPIs

export const hello = async (event, context) => {
  try {
    ResponseBuilder.setStatusCode(200).setBody({
      message: `hello world`
    })
  } catch (e) {
    if (e.code === 'UnAuthorized') {
      ResponseBuilder.setStatusCode(400).setBody({
        message: `Invalid Request`,
        code: 'invalid_request'
      })
    }
  } finally {
    return ResponseBuilder.getResponse()
  }
};

ブックマークや限定記事(予定)など

WP Kyotoサポーター募集中

WordPressやフロントエンドアプリのホスティング、Algolia・AWSなどのサービス利用料を支援する「WP Kyotoサポーター」を募集しています。
月額または年額の有料プランを契約すると、ブックマーク機能などのサポーター限定機能がご利用いただけます。

14日間のトライアルも用意しておりますので、「このサイトよく見るな」という方はぜひご検討ください。

広告ここから
広告ここまで

Related Category posts