Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
3
Help us understand the problem. What is going on with this article?
@channel-techtok

Flaskチュートリアル#2 ~POST, PUT, DELETEリクエスト編~

More than 1 year has passed since last update.

今回やること

前回はGETリクエストに対する処理を主に実装していきました(チュートリアル#1)。今回はFlaskでPOSTリクエスト、PUTリクエスト、DELETEリクエストに対する処理をそれぞれ書いていきます。なお、DB連携は次の記事で紹介するので今回はグローバル変数に定義した配列に対して変更を加えていきたいと思います。

詳しくはこちらで紹介しています

POSTリクエスト

まずはPOSTリクエストに対する処理を書いていきます。POSTは主にデータの追加に使われます。
今回はリクエスト側はテストを簡単にするためにcurlコマンドを使っていきます。

$ curl -X POST -H "Content-Type: application/json" -d '{"title":"新規投稿", "body":"新規投稿です"}' localhost:5000/post/add

-Xはリクエストのメソッド、-Hはリクエストヘッダ、-dはリクエストボディをそれぞれ指定しています。これはjson形式でlocalhost:5000/post/addにPOSTリクエストを送るという意味の文になります。

flask側はこんな感じになります

app.py
@app.route('/post/add', methods=['POST'])
def create_post():
    post = request.json
    db_data.append(post)
    return jsonify(db_data)

json形式でリクエストされたボディはrequest.jsonで受け取ることができます。受け取った記事を配列にappendして記事追加処理の完成です。今回はテストとして全てのレスポンス処理で変更された記事一覧(db_data)を返却しています。

PUTリクエスト

次にPUTリクエストに対する処理を書いていきます。これは主にデータの修正に使われます。

terminal
$ curl -X PUT -H "Content-Type: application/json" -d '{"title":"投稿修正", "body":"修正済み投稿です"}' localhost:5000/post/update/0

localhost:5000/post/update/0にPUTリクエストを送るという意味の文になります。ここでは/updateのあとに記事のidとして配列のインデックスを指定しています。

flask側のコードはこんな感じです

app.py
@app.route('/post/update/<id>', methods=['PUT'])
def update_post(id):
    post = request.json
    db_data[int(id)] = post
    return jsonify(db_data)

flaskではrouteに/<パラメータ>という風に指定することで関数にパラメータを渡すことができます。配列のid番目の記事をリクエストから受け取った記事内容で置き換えています。

DELETEリクエスト

最後にDELETEリクエストに対する処理です。これは主にデータを削除する場合に使われます。

terminal
$ curl -X DELETE localhost:5000/post/delete/1

updateの時と一緒で最後にパラメータとして消したい記事の配列のインデックスを渡しています。

flaskの方はこんな感じです。

app.py
@app.route('/post/delete/<id>', methods=['DELETE'])
def delete_post(id):
    db_data.pop(int(id))
    return jsonify(db_data)

updateの時とほとんど変わりません。

まとめ

いかがだったでしょうか?今回はFlaskでPOST, PUT, DELETEリクエストに対する処理を実装しました。#3ではrouteはそのままでDB連携をしていきたいと思います。

3
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
channel-techtok
TechTokちゃんねるのとくまるです! プログラミングのことについて幅広く取り上げていきます! 自然言語処理/Python/TensorFlow/スクレイピング/ Web/JavaScript/Node/Vue/React/Go/PHP Cloud/Firebase Blog/WordPress

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
3
Help us understand the problem. What is going on with this article?