色々テストするのに短くて簡単なAPIをメモっておこうと思ってこのページを作りました。
まだAPIとか作ったことがないという方が手始めに動かしてみるのにもちょうどいいかなと思います。
金額をリクエストとして送ると税込みの金額を返すAPIを作りました。エラー処理とかはそこまで厳密にやっていません。
tax.py
from flask import Flask, request, jsonify
app = Flask(__name__)
def tax(amount int, taxRate int):
return amount*(100+taxRate)/100
@app.route('/calc',methods=['POST'])
def main():
data = request.get_json()
try:
amount = int(data['amount'])
result = tax(amount,10)
return jsonify({'result':amount})
except (KeyError,ValueError,TypeError) as e:
return jsonify({'error':str(e)}),400
if __name__ == '__main__':
app.run(debug=True)
このままでも動きますが、コンテナを立てて動かしたいと思います。
まず、imageを保存するためにdocker desktopをダウンロードして起動します。
次に以下のファイルを用意します。
Dockerfile:
FROM python:3.9-slim
WORKDIR /app
copy . /app
RUN pip install --no-cache-dir flask gunicon
EXPOSE 5000
ENV NAME 10
CMD ['gunicon','--bind','0.0.0.0:5000','tax:app']
docker-compose.yaml
version: '3'
services:
image: ./
ports:
- '5000:5000'
enironment:
- NUMBER=10
ファイル構成はこんな感じになります。
*
|- tax.py
|- Dockerfile
|- docker-compose.yaml
では、コンテナを立ててみましょう。
docker compose up
curlコマンドで試しにリクエストを送ってみます。
curl -X POST -H 'Content-Type: application/json' -d '{"amount":100}' http://localhost:5000/calc
すると、{result:110}
と税込みの金額が返ってくると思います。
最後にコンテナを止めてお片付けをします。
docker compose down