課題10-1 平方根 REST API #
パスパラメータで数値を受け取り,その平方根を返す REST API を作成してください.
/sqrt/<num>
で num
の平方根(math.sqrt
で求められます)を返します.
num
は float
型で受け取ってください.
もし,num
が負の数の場合は,400
のステータスコードを返してください.
sqrt_rest.py
というファイル名で保存してください.
from flask import Flask
import math
app = Flask(__name__)
# ここに REST API を作成する.
app.run(port = 5001, debug = True, host = "0.0.0.0")
このスクリプトを実行したあと,ブラウザで http://localhost:5001/sqrt/2
にアクセスすると,1.41421356...
というメッセージが表示されることを確認してください.
発展問題 立方根
先ほどの sqrt_rest.py
に /cbrt/<num>
で num
の立方根を返す REST API を追記してください.
立方根は math.cbrt
で求められます.
立方根の場合は,負数でも問題ありません.
なお,math.cbrt
は Python 3.11 で追加された関数です.
それ以前のバージョンの Python を利用している場合は,num ** (1/3)
で立方根を計算してください.
課題10-2 四則演算 REST API #
以下の特徴を持つ四則演算 REST API を作成してください.
クエリパラメータで,v1
,v2
,op
を受け取り,v1
と v2
の四則演算結果を返します.
v1
,v2
は int
型で受け取り,op
は add
(足し算),sub
(引き算),mul
(掛け算),div
(割り算) のいずれかです.
op
が上記以外の場合は,404
のステータスコードを返してください.
v1
,v2
が int
でない場合(not v1.isdigit()
で調べられます)は,
400
のステータスコードを返してください.
calc_rest.py
というファイル名で保存してください.
from flask import Flask, request
app = Flask(__name__)
@app.route("/calc", methods = ["GET"])
def calc():
v1 = # クエリパラメータから v1 を取得する.
v2 = # クエリパラメータから v2 を取得する.
op = # クエリパラメータから op を取得する.
if # v1, v2, op のどれかが与えられなかった場合
return "Error: Invalid parameters", 400
i1 = int(v1)
i2 = int(v2)
if op == "add":
result = i1 + i2
elif op == "sub":
result = i1 - i2
elif op == "mul":
result = i1 * i2
elif op == "div":
if i2 == 0:
return "Error: Division by zero", 400
result = i1 / i2
else:
return "Error: Invalid operator", 400
return f'{{"operation":"{i1} {op} {i2}","result":{result}}}', 200
app.run(port = 5001, debug = True, host = "0.0.0.0")
このスクリプトを実行したあと,ブラウザで http://localhost:5001/calc?v1=1&v2=2&op=add
にアクセスすると,{"operation":"1 add 2","result":3}
というメッセージが表示されることを確認してください.