<commit_before>---
layout: post
title: "flask rest"
date: 2022-02-20
excerpt: "flaskでrestの使い方"
project: false
config: true
tag: ["flask", "rest", "api"]
comments: false
---

# flaskでrestの使い方"

## 概要
 - flaskでAPIを作成する際のテンプレート

### RESTアーキテクチャがサポートする投稿方式
 - `GET`
   - データの取得
 - `POST`
   - データの投稿
 - `PUT`
   - データの挿入
 - `PATCH`
   - データの変更
 - `DELETE`
   - データの削除 

## flaskによるrestに対応した最小限のサーバの実装例

```python
from flask import Flask, request, jsonify
import json

app = Flask(__name__)
data = {"a": ["v0", "v1", "v2"], "b": ["v4"]}

# 取得
@app.route('/', methods=["GET"])
def get_api():
    user = request.args.get("user")
    return 'get; ' + json.dumps(data.get(user))

# 新規レコードの追加
@app.route('/', methods=["POST"])
def post_api():
    user = request.args.get("user")<commit_msg>update "flask-rest" doc<commit_after>---
layout: post
title: "flask rest"
date: 2022-02-20
excerpt: "flaskでrestの使い方"
project: false
config: true
tag: ["flask", "rest", "api"]
comments: false
---

# flaskでrestの使い方"

## 概要
 - flaskでAPIを作成する際のテンプレート

### RESTアーキテクチャがサポートする投稿方式
 - `GET`
   - データの取得
 - `POST`
   - データの投稿
 - `PUT`
   - データの挿入
 - `PATCH`
   - データの変更
 - `DELETE`
   - データの削除 

---

## アクセス可能IPとポートの設定の例

```python
app.run(host="0.0.0.0", port=5000)
```
 - `host`
   - アクセス可能なIP
 - `port`
   - 起動時のポート 

---

## flaskによるrestに対応した最小限のサーバの実装例

```python
from flask import Flask, request, jsonify
import json

app = Flask(__name__)
data = {"a": ["v0", "v1", "v2"], "b": ["v4"]}

# 取得
@app.route('/', methods=["GET"])
def get_api():
    user = request.args.get("user")
    return 'get; ' + json.dumps(data.get(user))

# 新規レコードの追加
@app.route('/', methods=["POST"])
def post_api():
    user = request.args.get("user")
{'fraction_non_alphanumeric': 0.20105820105820105, 'fraction_numerical': 0.0188124632569077, 'mean_word_length': 3.538666666666667, 'pattern_counts': {'":': 4, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 1, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '511537', 'n_tokens_mistral': 886, 'n_tokens_neox': 862, 'n_words': 149}