11
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

webscript.ioを使って RESTful APIを作成

Posted at

はじめに

webscript.ioとは、スクリプトを実装するだけで簡単にBackend Serverを作ることができるサービスです。Web APIを持ったBackend Serverを建てる場合、Web Serverの立ち上げが必要になりますが、webscript.ioを用いれば、サーバーをたてることなく実現することが可能です。

サービスには有料版と無料版があり以下のような差分があります。

スクリーンショット 2016-01-21 12.16.39.png

7日間でEnd Point消えてしまいますが、ハッカソンやプロトタイピングには十分使用できるのではと思います。

エンドポイントの作成

タブで"Script"に移動して、左下の"Create a new script"を押します。そこで適当なsubdomainとパスを指定して下さい。
スクリーンショット 2016-01-21 12.31.56.png

まずは、以下のような簡単にSuccessを返すScriptを書いて、BrowserでアクセスしてみるとSuccessが返ってくると思います。

スクリーンショット 2016-01-21 12.38.22.png

Storageを使用する

webscript.ioはtable型にデータを永続化させることが可能です。永続化には"storage"という変数を用います。nameという変数のデータを保存したい場合は、storage.name="XXX"という形で保存が可能です。以下のScriptのサンプルはPOSTのクエリーパラメータで指定した値を、次のGETの呼び出しで取得できるものになります。

POST http://imiyatest.webscript.io/members?name=imiya
GET http://imiyatest.webscript.io/members
imiya
スクリーンショット 2016-01-21 16.24.54.png

POST/GETでメンバー登録、メンバー情報の取得ができるようにする

以下のようにPOSTメッセージでメンバー登録を行い、その後にGETでメンバーの情報を取得することを目指します。

POST http://imiyatest.webscript.io/members?name=suzuki

HTTP/1.1 200
Content-Length: 29
Content-Type: application/json
Access-Control-Allow-Origin: *
Cache-Control: no-store

{"id": "3", "name": "suzuki"}
GET http://imiyatest.webscript.io/members?id=3

HTTP/1.1 200
Content-Length: 29
Content-Type: application/json
Access-Control-Allow-Origin: *
Cache-Control: no-store

{"id": "3", "name": "suzuki"}

スクリプトは以下のようになります。まずstorageに総数を覚えておき、ユーザが追加される度にインクリメントしてそれをユーザーIDとします。GETではqueryされたidをキーとして、storageからユーザの名前を取得しています。

function addData(name)
	storage.count = (storage.count or 0) + 1
	storage[storage.count] = name
	response = {id=storage.count, name=name}
	return response
end

function getData(id)
	response = {id=id, name=storage[id]}
	return response
end

if request.method == "GET" then
	return getData(request.query.id)
elseif request.method == "POST" then	
	return addData(request.query.name)
else
	return "Unknown"
end

11
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?