BackendlessのREST APIからデータを読み書きする

# Backlenelessとは
- mBaaSなサービスの一つ。AWSやFirebaseのようなサービス。
- https://backendless.com/
- DB、ファイルストレージなどが揃っていて、D&Dで簡単なフロント画面も作れる。

# 準備
- MISSIONSの「DATA SPONGE」を見ながら、`Person`テーブルを作成しておく
    - name: STRING
    - age: INT

# Backendlessコンソールの「REST CONSOLE」からデータを読み書きする
- 左メニューの「Data」ー「Person」を開き、上部タブの「REST CONSOLE」を開く
- GETボタンでPersonテーブルのデータを取得
![Backendless-1-1](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142577/9147f81e-699f-735c-410b-7c748e79e10f.png)

- レコード追加は、Request Bodyにパラメタを入れてPOST
![Backendless-1-2](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142577/dcf9ab69-35cd-b6e2-3268-7a185d11f99d.png)

- 右上のEXPORTボタンを押すと、CURLやPHP形式のリクエストが表示できる

![Backendless-1-3](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142577/b1f72563-0d57-82de-84af-fa122e5e8721.png)

![Backendless-1-4](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142577/b8ee2cb5-cc93-3316-382e-690e7a5a0dd8.jpeg)

![Backendless-1-5](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142577/aaebf123-f018-0d45-5a6b-519b0e828329.jpeg)


- DATA BROWSERタブに戻ると、追加されているのが分かる
![Backendless-1-6](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142577/4a339c8d-7c67-b296-c6d0-fa25e3900a89.png)

# REST APIをプログラムから呼び出す

## Application IDとREST API keyをメモしておく

- 左メニューの歯車マーク「Manage」ー「App Settings」から、Application IDとREST API keyをメモしておく

![Backendless-2-1](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142577/88f36b7f-95ad-2086-df35-0b5abe6fb078.jpeg)

## 操作用のユーザを作成し、ログインしてDBに書き込み(Python)

```python
import json
import requests

appID = "YOUR-APPLICATION-ID-HERE"
restKey = "YOUR-REST-API-KEY-HERE"
baseUrl = "http://api.backendless.com"
header = { "Content-Type": "application/json" }
email = "xxx@example.com"
password = "foobar"


# ユーザ登録
url = f"{baseUrl}/{appID}/{restKey}/users/register"
data = { "email":email, "password":password }
response = requests.post(url, headers=header, data=json.dumps(data))
if type(response) == requests.models.Response:
    response = response.json()
print(response)

# ログイン
url = f"{baseUrl}/{appID}/{restKey}/users/login"
data = { "login":email, "password":password }
response = requests.post(url, headers=header, data=json.dumps(data))
if type(response) == requests.models.Response:
    response = response.json()
print(response)
token = response['user-token']

# レコードの追加
table = "Person"
url = f"{baseUrl}/{appID}/{restKey}/data/{table}"
userHeaders =  { "Content-Type": "application/json", "user-token": token }
data = { "name": "John2", "age": 25 }
response = requests.post(url, headers=userHeaders, data=json.dumps(data))
print(response)
```


## Backendlessコンソールで確認
- ユーザ登録
![Backendless-3-1](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142577/61cb0003-2785-1036-4d60-d7abc6b05798.png)

- レコード追加
![Backendless-3-2](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142577/de0e5842-c317-b8b2-ed30-1c0b3f140b7a.png)


# 参考
- 公式ドキュメント [Quick Start Guide for REST API
](https://backendless.com/quick-start-guide-for-rest-api/)
- YouTubeに公式動画「[Learn how to use REST Console to test drive Backendless REST APIs](https://www.youtube.com/watch?v=dnu_ObEB3dY)」がある
- GitHubの[blakebjorn/Backendless-Python](https://github.com/blakebjorn/Backendless-Python)