Denoと開始によるServerlessなウェブAPI -パート2

5997 ワード

前のポストでは、私たちはHTMLでランダムな引用を表示するために、typescriptとdenoでただ一つのServerlessな関数を書きました.応答は圧倒的であり、今では人々は彼らのアプリケーションに統合できるAPIを要求している./apiルートを加えましょう!

新しいルートの追加
私たちは、app.arcファイルを変更することによって、私たちのAPIのための新しいルートを加えるつもりです.
# app.arc
@app
your-app-name

@http
get /
get /api
次に、HTTP関数の新しいディレクトリとファイルを作成します.次のコードをsrc/http/get-api/index.tsにコピーします.
// src/http/get-api/index.ts
import { quote } from "https://gist.githubusercontent.com/pchinjr/75027d05c5844d2f2364e1acbb2c8c37/raw/2ff84587ba01d6d262125fe8c22c27d4b704a837/quote-zotic.js"
export async function handler (req: object) {
return {
  statusCode: 200,
  headers: {
  'cache-control': 'no-cache, no-store, must-revalidate, max-age=0, s-maxage=0', 'content-type': 'application/json; charset=utf8'},
  body: JSON.stringify( {data: quote() } )
  }
}
また、デフォルトのノードから変更するための小さな設定ファイルを供給する必要があります.JSランタイムは、機能フォルダの.arc-configファイルでDENOに.
# src/http/get-api/.arc-config
@aws
runtime deno
get-api関数はquote()から同じget-indexロジックを使用していますが、今では私たちは、より多くの引用符から選択する必要があり、それは他のアプリケーションで消費できるJSONを返します.
アクションで表示するには、コマンドラインからnpm startを実行し、http://localhost:3333/apiに移動します

コードをインポート
DENOはサードパーティ製のコードをインポートするESモジュールを使用します.私はquote()の機能からget-indexロジックをとって、GitHub Gistでそれを主催することによってこの機能を試してみたかったです.
ここでGISTを見ることができます.
https://gist.github.com/pchinjr/75027d05c5844d2f2364e1acbb2c8c37
// gist.js
export function quote() {
 let quotes = ['first quote', 'second quote', 'third']
 let min = 0
 let max = quotes.length - 1
 let rando = ~~(Math.random() * (max-min) + min)
 return quotes[rando]
}
この種のインポートを使用すると、集中パッケージマネージャなしで依存関係をより制御できます.任意の余分なツールなしでプライベートパッケージのレジストリを作成することができます.このような変更をすれば、私はインポートするコードについてもっと意図的に考えるようになります.
For more info, the Deno docs have a helpful explanation about linking to third party code.

開始時にCI/CDで展開する
新しいAPIは、それが一般に利用可能になるとき、funcだけです.配備は、ちょうど1 , git push .あなたのデフォルト支店への各々のプッシュは、stagingに新しい配備を開始します.先に行くと私たちと共有することによってそれを披露.
開発ツールがバックグラウンドにフェードし続けているので、新しいワークフローを試してみるのはエキサイティングな時期です.それは私たちのすべてに焦点を当て、我々のコアアプリケーションロジックで何が可能かを探ることができます.