Help us understand the problem. What is going on with this article?

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

今回やること

前回は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連携をしていきたいと思います。

channel-techtok
TechTokちゃんねるのとくまるです! プログラミングのことについて幅広く取り上げていきます! 自然言語処理/Python/TensorFlow/スクレイピング/ Web/JavaScript/Node/Vue/React/Go/PHP Cloud/Firebase Blog/WordPress
https://www.youtube.com/channel/UC8HBsYr7qz1znAyoGMMU6ZA
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
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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
ユーザーは見つかりませんでした