課題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} というメッセージが表示されることを確認してください.