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

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

新規登録して質問してみよう
ただいま回答率
85.50%
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はプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

1回答

2143閲覧

Flask Authorization: Bearer TOKEN記載法

dendenmushi

総合スコア98

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はプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2019/12/05 20:30

編集2019/12/05 20:31

前提・実現したいこと

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
┗test.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

1from flask import Flask, jsonify, request 2import bleach 3 4app = Flask(__name__) 5 6TOKEN = 'YOUR_TOKEN' 7 8@app.route('/api/v1/user', methods=['POST']) 9def add_user(): 10 # check token 11 header = request.headers.get('Authorization', None) 12 if header is not None: 13 _, token = header.split() 14 if token != TOKEN: 15 return jsonify({'Forbidden': 'Access is denied'}), 403 16 else: 17 return jsonify({'Forbidden': 'Access is denied'}), 403 18 19 # method check 20 if request.method != 'POST': 21 return jsonify({'Method Not Allowed': 'Method is invalid.'}), 405 22 23 # create new user 24 new_user = {} 25 for key in request.form.keys(): 26 new_user[key] = bleach.clean(request.form.get(key)) 27 28 # save uploaded file into data folder 29 for file in request.files: 30 if file is None: 31 break 32 upload_file = request.files.get(file) 33 # upload_path = 'data/%s' % upload_file.filename 34 upload_path = '..\work\%s' % upload_file.filename 35 upload_file.save(upload_path) 36 new_user[file] = upload_file.filename 37 all_directory = '..\work\' 38 return jsonify(upload_file.filename) 39 40if __name__ == '__main__': 41 app.run(debug=True) 42

⑦call.httpの中身は以下

Python

1POST http://localhost:5000/api/v1/user 2Authorization: Bearer YOUR_TOKEN 3Content-Type: multipart/form-data; boundary=HOGEHOGEBOUNDARY 4 5--HOGEHOGEBOUNDARY 6Content-Disposition: form-data; name=user_name 7 8SAKAMOTO RYOMA 9--HOGEHOGEBOUNDARY 10Content-Disposition: form-data; name=user_email 11 12ryoma.sakamoto@... 13--HOGEHOGEBOUNDARY 14Content-Disposition: form-data; name="file"; filename="test1.pdf" 15Content-Type: application/octet-stream 16 17< ./test1.pdf 18--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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

記載方法として最適資料見つけました。お騒がせ致しました。
以下参考サイトです。
URL:https://openid-foundation-japan.github.io/rfc6750.ja.html

投稿2019/12/08 23:06

dendenmushi

総合スコア98

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問