☁
12/07 Vercel Serverless Functions
この記事は、Serverless Hello World Advent Calendar 2020の7日目です。
VercelのServerless FunctionsでHTTP APIを実装します。
関数の作成
Vercelでは通常Next.jsやGatsby.jsなどのレポジトリをベースにしますが、今回は静的ファイルは不要なのでいきなり関数を書いていきます。
$ mkdir severless-helloworld-vercel
$ cd severless-helloworld-vercel
$ git init
$ mkdir api
api/hello.js
module.exports = (req, res) => {
const { name = 'World' } = req.query
res.status(200).send(`Hello ${name}!`)
}
デプロイ
GitHubにpushして、Vercelに登録します。特にServerless Functions固有の設定などは不要です。
少し待つとデプロイが完了するので、cURLで叩いてみます。
URLは{サイトURL}/api/{関数名}
になります。
curl -v 'https://severless-helloworld-vercel.vercel.app/api/hello?name=world' <main 0:53>
* Trying 76.76.21.21:443...
* TCP_NODELAY set
* Connected to severless-helloworld-vercel.vercel.app (76.76.21.21) port 443 (#0)
...(省略)...
> GET /api/hello?name=world HTTP/2
> Host: severless-helloworld-vercel.vercel.app
> user-agent: curl/7.68.0
> accept: */*
>
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* old SSL session ID is stale, removing
* Connection state changed (MAX_CONCURRENT_STREAMS == 128)!
< HTTP/2 200
< content-type: text/html; charset=utf-8
< cache-control: public, max-age=0, must-revalidate
< content-length: 12
< date: Fri, 18 Dec 2020 16:41:43 GMT
< etag: W/"c-00hq6RNueFa8QiEjhep5cJRHWAI"
< x-vercel-cache: MISS
< age: 0
< server: Vercel
< x-vercel-id: hnd1::sfo1::74nrp-1608309703307-99fd3b01d233
< strict-transport-security: max-age=63072000; includeSubDomains; preload
<
* Connection #0 to host severless-helloworld-vercel.vercel.app left intact
Hello world!%
Vercel上にhello関数をデプロイできました。
Discussion