RESTful API勉強内容メモ

最近Flaskの勉強をしていたので、今後スマホアプリと連携したアプリケーションを作るときのためにAPIの設計についても勉強してみました.

REST

APIの仕様を決める上で、RESTやSOAPといった考え方があるらしい. 特にRESTという考え方は結構重要らしいという話を聞いたので、勉強した内容を自分なりにまとめてみる.(はっきり理解しているわけではないので間違いがあるかもです)

RESTは「リソース(ブログの記事や画像など)」を扱うための考え方のようです. リソースはそれぞれ固有のURIを持っており、リソースに対するCRUD(Create,Read,Update,Delete)操作を、HTTPの4つのメソッド(GET,POST,PUT,DELETE)で指定するそうです.

CRUD操作 対応するHTTPメソッド 役割 例)ブログ記事
Create(生成) POST リソースの新規作成 記事の作成
Read(読み取り) GET リソースの取得 記事の表示
Update(更新) PUT 既存のリソースのアップデート 記事の更新
Delete(削除) DELETE リソースの削除 記事の削除


Flaskで表現すると↓のようなイメージになると思います.

@app.route("/article/<int:num>/", methods=['GET', 'POST', 'PUT', 'DELETE'])
def article_crud(num):
    """ブログ記事のCRUD操作
    """
    if request.method == 'POST':
        # 記事の作成

    elif request.method == 'PUT':
        # 記事の更新

    elif request.method == 'DELETE':
        # 記事の削除

    else:
        # request.method == 'GET'
        # 記事の取得


cURLとjq

apiを設計したら、その動作確認としてcURLやjqを使うと便利そうです。どちらもHomeBrewでインストールできます.curlは↓のように各種のリクエストを送信できます.

# GET
$ curl http://localhost:5000/article/1.html

# POST
$ curl http://localhost:5000/article/1 -X POST -d "article[title]=送信データ"

# PUT
$ curl http://localhost:5000/article/1 -X PUT -d "article[title]=送信データ" 

# DELETE
$ curl http://localhost:5000/article/1 -X DELETE

レスポンスがjson形式なら、jqを使って見やすく表示できます.

$ curl http://localhost:5000/article/1 -X DELETE | jq .


参考

RESTfulAPIについては

http://www.slideshare.net/takuyaueda967/angular-jsbootstrapwebhtml5-2

を読んで勉強しました。

FlaskでRESTfulAPIをかくなら

を参考にするといいかも。

その他

RESTful Web APIs

RESTful Web APIs