を使用してREST APIを作成する方法
Flask マイクロフレームワークpython Webアプリケーションの開発に使用できます.この記事では、我々はどのように使用するフラスコで安らかなAPIを作成する方法を参照してくださいFlask-RESTful .
プロジェクトを設定する前に、他のプロジェクトから分離されたPythonパッケージのインストールを維持するためのvirutal環境を作成します.
仮想環境を設定するには
私たちはノートのタイトル、説明、日付、createdChorseでプライマリキーとしてidとプライオリティフィールドでcreatedRAGEノートモデルを作成します.我々は、このアプリケーションのデータベースとしてSQLiteを使用します.
リソースはフラスコ安らかなブロックを構築しています.リソースクラスを使用してHTTPメソッドをオブジェクトにマップします.私たちは
Decoratorを使用すると、データオブジェクトをAPIから取得し、フィールドのフィルタリングを適用します.
すべての注記要素のためにもう一つのリソースを加えます
フラスコWebサーバを実行するには
すべてのメモのリストを取得するには、次のURLにGETリクエストを送信します.
http://127.0.0.1:5000/notes/
新しいノートを追加するには、リクエストの本体部分の次の形式で同じURLにポストリクエストを送信します.
希望の記事は助けだった!
その記事はもともと登場したApcelent Tech Blog .
インストール
プロジェクトを設定する前に、他のプロジェクトから分離されたPythonパッケージのインストールを維持するためのvirutal環境を作成します.
仮想環境を設定するには
sudo pip install virtualenv
それから、我々はVenvという名前の仮想環境をつくって、それを起動させますvirtualenv venv
source venv/bin/activate
その後、これらの仮想環境でフラスコとflast RESTfulをインストールしますpip install Flask
pip install flask-restful
モデル
私たちはノートのタイトル、説明、日付、createdChorseでプライマリキーとしてidとプライオリティフィールドでcreatedRAGEノートモデルを作成します.我々は、このアプリケーションのデータベースとしてSQLiteを使用します.
from sqlalchemy import Column
from sqlalchemy import Integer
from sqlalchemy import String
from sqlalchemy.ext.declarative import declarative_base
from datetime import datetime
DB_URI = 'sqlite:///./main.db'
Base = declarative_base()
class Note(Base):
__tablename__ = 'notes'
id = Column(Integer, primary_key=True)
title = Column(String(80))
description = Column(String(80))
create_at = Column(String(80))
create_by = Column(String(80))
priority = Column(Integer)
if __name__ == "__main__":
from sqlalchemy import create_engine
engine = create_engine(DB_URI)
Base.metadata.drop_all(engine)
Base.metadata.create_all(engine)
資源
リソースはフラスコ安らかなブロックを構築しています.リソースクラスを使用してHTTPメソッドをオブジェクトにマップします.私たちは
resource.py
まず、NoteSourceクラスを定義します.from models import Note
from db import session
from datetime import datetime
from flask.ext.restful import reqparse
from flask.ext.restful import abort
from flask.ext.restful import Resource
from flask.ext.restful import fields
from flask.ext.restful import marshal_with
note_fields = {
'id': fields.Integer,
'title': fields.String,
'description': fields.String,
'create_at': fields.String,
'create_by': fields.String,
'priority': fields.Integer
}
parser = reqparse.RequestParser()
parser.add_argument('title')
parser.add_argument('description')
parser.add_argument('create_at')
parser.add_argument('create_by')
parser.add_argument('priority')
class NoteResource(Resource):
@marshal_with(note_fields)
def get(self, id):
note = session.query(Note).filter(Note.id == id).first()
if not note:
abort(404, message="Note {} doesn't exist".format(id))
return note
def delete(self, id):
note = session.query(Note).filter(Note.id == id).first()
if not note:
abort(404, message="Note {} doesn't exist".format(id))
session.delete(note)
session.commit()
return {}, 204
@marshal_with(note_fields)
def put(self, id):
parsed_args = parser.parse_args()
note = session.query(Note).filter(Note.id == id).first()
note.title = parsed_args['title']
note.description = parsed_args['description']
note.create_at = parsed_args['create_at']
note.create_by = parsed_args['create_by']
note.priority = parsed_args['priority']
session.add(note)
session.commit()
return note, 201
reqparseはフラスコの変数へのアクセスを提供するために使用されるFLAK RESTfulリクエスト解析インターフェイスです.リクエストオブジェクト.Decoratorを使用すると、データオブジェクトをAPIから取得し、フィールドのフィルタリングを適用します.
すべての注記要素のためにもう一つのリソースを加えます
class NoteListResource(Resource):
@marshal_with(note_fields)
def get(self):
notes = session.query(Note).all()
return notes
@marshal_with(note_fields)
def post(self):
parsed_args = parser.parse_args()
note = Note(title=parsed_args['title'], description=parsed_args['description'],
create_at=parsed_args['create_at'], create_by=parsed_args['create_by'],
priority=parsed_args['priority'] )
session.add(note)
session.commit()
return note, 201
別のファイルを作成するapi.py
APIにこれらのリソースを追加するにはfrom flask import Flask
from flask_restful import reqparse, abort, Api, Resource
from models import Note
from resources import *
app = Flask(__name__)
api = Api(app)
## Setup the API resource routing
api.add_resource(NoteListResource, '/notes/', endpoint='notes')
api.add_resource(NoteResource, '/notes/<string:id>', endpoint='note')
if __name__ == '__main__':
app.run(debug=True)
フラスコサーバの起動とリクエストの送信
フラスコWebサーバを実行するには
python api.py
APIは、カールやブラウザのためのPostmanのようなブラウザのアドオンを使用してテストすることができますし、FirefoxのHttpRequster.すべてのメモのリストを取得するには、次のURLにGETリクエストを送信します.
http://127.0.0.1:5000/notes/
新しいノートを追加するには、リクエストの本体部分の次の形式で同じURLにポストリクエストを送信します.
{
"create_at": "2017-08-17 00:00",
"create_by": "v",
"description": "sample notes from api",
"priority": 1,
"title": "sample note from api"
}
実装とコードベースは上記の例で利用可能ですhere . プロジェクトを設定するには、リポジトリをクローン化し、仮想環境で要件をインストールし、サーバーを起動します.希望の記事は助けだった!
その記事はもともと登場したApcelent Tech Blog .
Reference
この問題について(を使用してREST APIを作成する方法), 我々は、より多くの情報をここで見つけました https://dev.to/apcelent/how-to-create-rest-api-using-flask-2pkiテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol