カサレリア。katzenです。
お久しぶりの方、はじめましての方、どうぞよろしくお願いいたします。
今回は、予告通りAPIサーバを作りたいと思います。
プログラムを学ぶときにWebにふれることが多いと思います。
V言語もWebに絡んでいくことで広まっていくと思いますので、超簡単なAPIサーバを作ります。
軽く大枠を決めましょう。
- 起動すると指定ポートでListenする。
- 書き込みなどは行わず参照のみ。(Not RESTful)
- HTTPプロトコルで通信を行う。GET only
- ルーティングによりJsonを返す。
- パラメータを指定して、Jsonに埋め込める。
こんな感じでどうでしょうか。
早速作っていきましょう。
まず、ライブラリがないか探します。大抵自分が思い浮かぶより先に誰かが作っているはずです。
そしてプログラムの場合、結構 awesome
があります。
ドキュメントの内容や最終更新日を見る限り
を使うのが良さそうです。一部PreAlphaらしいですが。
早速サンプルをもとに最小のサーバを書いてみましょう。
// server.v
import vweb
struct App{
vweb.Context
}
fn main() {
vweb.run(&App{}, 8080)
}
fn (mut app App) index() vweb.Result {
return app.text('index!')
}
細かい内容は置いといて、なんとなくわかりますでしょうか。
8080ポートで待ち受けて、indexに GETリクエストがある場合、"index!"を返すプログラムです。
起動してみます。
$ v run server.v
# [Vweb] Running app on http://localhost:8080/
こんな感じでサーバが起動しましたでしょうか。
私はChromebookのlinuxで開発しているのですが、
openssl/rand.h
関連のエラーが出て起動できませんでした。
検索すると2021年1月の記事が出てきました。私のです。
ありがとう私。
改めてMagicodeでも解決法を書いておきます。
→
こちら
さて、無事起動できたらブラウザで
http://localhost:8080
へアクセスすると、"index!"と表示されましたでしょうか。
もう目的の半分は達成ですね。
- 起動すると指定ポートでListenする。
8080ポートで待ち受け
- 書き込みなどは行わず参照のみ。(Not RESTful)
- HTTPプロトコルで通信を行う。GET only
GETリクエスト対応 indexアクセスで値を返せる。
あとはJsonやパラメータの扱いを残すのみです。簡単!