現在、Python(Flask)を使用してREST APIを作成する方法を理解しようとしています。これは、ユーザーが指定したURLをブラウズすることでJSON形式のデータを取得できます。 :5000/DPM。私は、次のPythonスクリプトを書きましたが、のようなエラーを受け取る:JSON用データ型PythonのREST API
File "mysql.py", line 23, in api.add_resource(DPM, '/DPM') File "C:\Program Files\Anaconda3\lib\site-packages\flask_restful__init__.py", line 404, in add_resource self._register_view(self.app, resource, *urls, **kwargs) File "C:\Program Files\Anaconda3\lib\site-packages\flask_restful__init__.py", line 444, in _register_view resource_func = self.output(resource.as_view(endpoint, *resource_class_args, AttributeError: type object 'DPM' has no attribute 'as_view'
from flask import Flask
from flask_restful import Resource, Api
from sqlalchemy import create_engine
import json
app = Flask(__name__)
api = Api(app)
class DPM:
def __init__(self, time, month):
self.time = time
self.month = month
energy = DPM('[12.18]','11')
def jdefault(o):
return o.__dict__
print(json.dumps(energy, default=jdefault, indent=4))
api.add_resource(DPM, '/DPM')
if __name__ == '__main__':
app.run(debug=True)
はどこが間違ってここにしましたか?
グレート。できます。しかし、実際にas__viewメソッドを利用するために、プラグイン可能なクラスベースのビューをインポートするべきではありませんか? JSONにデータをシリアル化するためにimport jsonを使用する必要がない理由を簡単に説明してください。 –
APIのアイデアは、既に知られている関数やメソッドを記述する必要はありません。この場合は、リソース・インプリメンテーションはクラス・ベースのビューを継承し、実装し、jsonを公開します。つまり、このクラスでは、動詞GET、POST、DELETE、PUTを使用するときに呼び出されるget、post、delete、putメソッドを実装することが期待されます。結論として、APIは人生をより楽にしてくれます。これらのメソッドを実装し、公開するデータの辞書を返すだけで済みます。 – eyllanesc
こんにちは@eyllanesc。例えば、インテルネットワーク上のlocalhost上で実行されているCentOSサーバー(これは多分10.210.1.99のIP)上でこれをテストしているとしたら、同じネットワーク内の他のコンピュータに同じ要求を送信する方法を知っていますか?私は10.210.1.99:5000または10.210.1.99:5000/DPMのブラウジングを試みましたが、失敗しました。しかし私がPC 10.210.1.99からpingをすると、私は応答を受けました。 –