मैं पाइथन के लिए बहुत नया हूं और फ्लास्क रीस्टफुल के लिए भी नया हूं। मैं अपने मार्गों को कम करने की कोशिश कर रहा हूं और मुझे POSTइनिंग में परेशानी हो रही है। मुझे पोस्टमैन का उपयोग करने में त्रुटि मिलती है "TypeError: post() लापता 3 आवश्यक स्थितिगत तर्क: 'उपयोगकर्ता नाम', 'अवतार', और 'दोस्त_कोड'" लेकिन मेरे शरीर में वे तर्क हैं मेरा POST अनुरोध।

नीचे मेरा कोड है। मैं केवल मूल से ही POST में सक्षम होना चाहता हूं।

from flask import Flask
from flask_restful import Resource, Api

app = Flask(__name__)
api = Api(app)

users = []


class User(Resource):
    def get(self, username):
        # /<username>
        for user in users:
            if user['username'] == username:
                return user

    def post(self, username, avatar, friend_code):
        # / root
        user = {'username': username, 'avatar': avatar,
                'friend_code': friend_code}
        users.append(user)
        return user


api.add_resource(User, '/', '/<string:username>')


app.run(debug=True)
0
Super Hacker Man 6 अप्रैल 2020, 21:43

1 उत्तर

सबसे बढ़िया उत्तर

आपकी post पद्धति को 3 तर्कों username, avatar, friend_code की आवश्यकता है।

जब आप api.add_resource(User, '/', '/<string:username>') करते हैं, तो आप केवल एक तर्क (उपयोगकर्ता नाम) पारित कर रहे हैं। तो, अन्य दो (अवतार और दोस्त_कोड) के बारे में क्या?

या तो आप उन्हें कुछ स्थिर मानों के लिए हार्डकोड करें जिन्हें आपकी पोस्ट विधि हमेशा चुन सकती है या पेलोड के शरीर से उन्हें पार्स करने के लिए reqparse का उपयोग कर सकती है।

मोटे तौर पर इस तरह:

from flask_restful import Resource, Api, reqparse
parser = reqparse.RequestParser()

def post(self):
        parser.add_argument('avatar', type=str)
        parser.add_argument('friend_code', type=str)
        args = parser.parse_args()

        user = {'username': username, 'avatar': avatar,
                'friend_code': friend_code}
        users.append(user)
        return user

आपको आरंभ करने के लिए एक अच्छा लिंक नीचे दिया गया है बिल्डिंग बेसिक रीस्टफुल फ्लास्क-रेस्टफुल के साथ एपीआई

2
Mayank Porwal 6 अप्रैल 2020, 19:01