質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

解決済

Flask Authorization: Bearer TOKEN記載法

dendenmushi
dendenmushi

総合スコア0

Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

1回答

0評価

0クリップ

24閲覧

投稿2019/12/05 20:30

編集2022/01/12 10:58

前提・実現したいこと

Flask APIでユーザーIDとパスワードを渡し、トークンをもらいPOSTにて付加したい。

環境

OS:windows10 64bit
language:Python3.7
tool:VScode,Anaconda
textEditor:VSCode
VSCode:RestfulClientインストール済み使用(GETPOST送信テスト)

行った内容

①開発準備 cd
(envs_2019) D:\ProgramData\Anaconda3\envs\envs_2019>

②Directory構成
D:\ProgramData\Anaconda3\envs\envs_2019>
envs_2019フォルダ
┗api_testフォルダ
┗api.py
┗dataフォルダ
┗__init__.py
┗requirement.txt
┗call.http
┗face.png

③flask と flask_restful インストール
参考サイト1
参考サイト2
(envs_2019) D:\ProgramData\Anaconda3\envs\envs_2019>pip install flask flask_restful

④Local仮想サーバー立て
(envs_2019) D:\ProgramData\Anaconda3\envs\envs_2019\api_test>set FLASK_APP=api.py
(envs_2019) D:\ProgramData\Anaconda3\envs\envs_2019\api_test>set FLASK_ENV=development
(envs_2019) D:\ProgramData\Anaconda3\envs\envs_2019\api_test>flask run

⑤VScodeにてRestClientをインストール
参考サイト3

⑥api.pyの中身は以下

該当のソースコード

python

from flask import Flask, jsonify, request import bleach app = Flask(__name__) TOKEN = 'YOUR_TOKEN' @app.route('/api/v1/user', methods=['POST']) def add_user(): # check token header = request.headers.get('Authorization', None) if header is not None: _, token = header.split() if token != TOKEN: return jsonify({'Forbidden': 'Access is denied'}), 403 else: return jsonify({'Forbidden': 'Access is denied'}), 403 # method check if request.method != 'POST': return jsonify({'Method Not Allowed': 'Method is invalid.'}), 405 # create new user new_user = {} for key in request.form.keys(): new_user[key] = bleach.clean(request.form.get(key)) # save uploaded file into data folder for file in request.files: if file is None: break upload_file = request.files.get(file) # upload_path = 'data/%s' % upload_file.filename upload_path = '..\\work\\%s' % upload_file.filename upload_file.save(upload_path) new_user[file] = upload_file.filename all_directory = '..\\work\\' return jsonify(upload_file.filename) if __name__ == '__main__': app.run(debug=True)

⑦call.httpの中身は以下

Python

POST http://localhost:5000/api/v1/user Authorization: Bearer YOUR_TOKEN Content-Type: multipart/form-data; boundary=HOGEHOGEBOUNDARY --HOGEHOGEBOUNDARY Content-Disposition: form-data; name=user_name SAKAMOTO RYOMA --HOGEHOGEBOUNDARY Content-Disposition: form-data; name=user_email ryoma.sakamoto@... --HOGEHOGEBOUNDARY Content-Disposition: form-data; name="file"; filename="test1.pdf" Content-Type: application/octet-stream < ./test1.pdf --HOGEHOGEBOUNDARY--

⑧VSCodeのRestClientツールの使用:call.httpをVSCodeにて開き、Send Request実行クリック(API送信テスト)

試したこと

特に試そうとしたサイト
いろいろなサイトを調べているのですが、Authorization: Bearer YOUR_TOKENの書き方について言及されている箇所がなく困っています。
JWTですと記載法が変わってしまうかもしれませんが、ユーザーネームとPWからトークンを渡せればゴールとしてはよいかと思っておりまして、bearerが一番知りたいですが他記載法などご教授頂けないでしょうか。
よろしくお願い致します。
(途中teratailの質問ボタン押したところなぜか全消えしまして再度書き直しております。もし文としておかしな場所あればご指摘お願い致します。。)

他参考サイト

https://qiita.com/y-miine/items/d9f2168fe72a1e29c91f
https://qiita.com/tesstesstex/items/90b9488dc337dbb535c0
https://tools.ietf.org/html/rfc7578
API:https://github.com/yukkyo/simple-ml-api/blob/master/run_server.py

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。