बस लक्षणों के लिए इस मामले में बोतल के साथ बंद शुरू, निम्नलिखित साथ http://flask.pocoo.org/docs/views/फ्लास्क - नेस्टेड आराम एपीआई - विधिदृश्य के अलावा कुछ और उपयोग करें या मैंने खराब डिजाइन किया है?
कहो पर मैं एक बुनियादी REST API है,:
/
GET - list
POST - create
/<symptomid>
GET - detail
PUT - replace
PATCH - patch
DELETE - delete
मैं इस सुंदर सफाई से बोतल के MethodView
साथ इस प्रकार लागू कर सकते हैं:
from flask import Blueprint, request, g
from flask.views import MethodView
#...
mod = Blueprint('api', __name__, url_prefix='/api')
class SymptomAPI(MethodView):
""" ... """
url = "/symptoms/"
def get(self, uid):
if uid is None:
return self.list()
else:
return self.detail(uid)
def list(self):
# ...
def post(self):
# ...
def detail(self, uid):
# ...
def put(self, uid):
# ...
def patch(self, uid):
# ...
def delete(self, uid):
# ...
@classmethod
def register(cls, mod):
symfunc = cls.as_view("symptom_api")
mod.add_url_rule(cls.url, defaults={"uid": None}, view_func=symfunc,
methods=["GET"])
mod.add_url_rule(cls.url, view_func=symfunc, methods=["POST"])
mod.add_url_rule('%s<int:uid>' % cls.url, view_func=symfunc,
methods=['GET', 'PUT', 'PATCH', 'DELETE'])
SymptomAPI.register(mod)
लेकिन, चलो कहते हैं कि मैं इन व्यक्तिगत लक्षणों पर एक और एपीआई देते करना चाहते हैं 10
/<symptomid>/diagnoses/
GET - list diags for symptom
POST - {id: diagid} - create relation with diagnosis
/<symptomid>/diagnoses/<diagnosisid>
GET - probability symptom given diag
PUT - update probability of symptom given diag
DELETE - remove diag - symptom relation
मेरे पास उपर्युक्त दो के बजाय 4 जीईटी होगा।
- क्या आपको यह बुरा एपीआई डिज़ाइन लगता है?
MethodView
इस डिजाइन के लिए उपयुक्त होगा? (यदि डिज़ाइन खराब नहीं है)- आप इन मार्गों को कैसे कार्यान्वित करेंगे?
तो ... इस प्रश्न को लिखने में, मुझे एक सभ्य समाधान मिला है। जब तक मैं यहां हूं, मैं भी प्रश्न और समाधान पोस्ट कर सकता हूं। किसी भी प्रतिक्रिया की अभी भी सराहना की जाएगी।