A Hello, Server
A Hello, Server
AC.icon A1 Hello World
/helloにアクセスすると、hello world!をレスポンスとして返す
AC.icon A2 JSON Simple Analysis
/helloにアクセスすると、サーバーにJSON形式で保存した以下のデータのうち、"objective"の値を返せ
code:json
{
"objective":57
}
AC.icon A3 JSON Complex Analysis
MySQLデータベースを持つ JSONデータベースで良い
SQLiteでもよい
テーブル”table"をもつ
カラムはA:int, B:string
(12, "hoge")
(24, "huga")
(15, "piyo")
(1, "poyo")
/helloを入力すると次の内容を満たすSQLクエリを処理し、その結果のうちカラムBの内容を返せ。
A <= 12を満たすタプル
AC.icon A4
/helloを入力すると、次の内容を返す
先述のタプルをJSONで返す
簡易な検索が実装できた
ちなみに、/にアクセスすると404が帰ってくる
https://gyazo.com/8560b25a15c920b7ade0b1983f14d3cb
A2
データ形式のチェックも行われるので安全
結果を返せる時は200で返す。
Rocketではどうやってそう返すのか?
status::Customを使えば、関数ごとに違うものを返すことができる。
結果を返せない時は500
ファイルを開けなかった...など
Wrappingを使えば返せる。
code:rs
struct InternalErrorResponse(String);
このように、deriveとresponseを使うことで、簡単にレスポンスを作ることができる。
型レベルでの認証...?
ファイルについてはこれだけでserveできるらしい。
Rocket makes it even easier to serve static files!
code:rs
use rocket::fs::FileServer;
fn rocket() -> _ {
rocket::build()
// serve files from /www/static at path /public
.mount("/public", FileServer::from("/www/static"))
}
DB File not found. No such file or directory (os error 2)
エラー返せた!
code:log
GET / text/html:
> Matched: (index) GET /
> Outcome: Success(200 OK)
> Response succeeded.
code:response
57
おっ!やったね