#rest #http #flask
#rest #http #flask
Вопрос:
Я предоставляю flask api с content-type = multipart / form-data, который принимает как json, так и zip-файл в качестве входных данных. Когда я пытаюсь прочитать, я могу получить zip-файл. однако я не могу прочитать файл json. Я пробовал несколько вещей, но ни у одного из них нет данных json. Поддерживается ли это вообще?
Я использую анализатор flask restplus для чтения содержимого файла с помощью «werkzeug.datastructures import FileStorage», тогда как для получения json я использовал различные параметры, приведенные ниже, ни один не работал ->request.form
-> dict(request.form)
-> запрос.files.get_json(force= True)
-> api.полезная нагрузка
from werkzeug.datastructures import FileStorage, ImmutableMultiDict
parser= api.parser()
parser.add_argument('opc-retry-token', location='headers',required='true')
parser.add_argument('file', location='files', type=FileStorage, required=True)
def init(self):
args = parser.parse_args()
token = args['opc-retry-token']
self.token=token
self.args=args
logger.info(args)
# above log gives {'opc-retry-token': '1234', 'file': <FileStorage:
@ns.route('/prepare')
@api.expect(parser)
class OICPrepare(Resource):
@api.expect(oic_prepare)
def post(self):
init(self)
logger.info(request.form)
# above log gives 'None'
data = dict(request.form)
logger.info(data)
# above log gives ImmutableMultiDict([])
logger.info(request.files.get_json(force=True))
#above log gives {}
upload_file = self.args['file']
upload_file.save('/oic_admin/wallet.zip')
#above save command does the zip file properly
Я ожидаю, что как zip-файл, так и json будут прочитаны flask api.
Комментарии:
1. Насколько я понимаю из документации , Flask RESTPlus поддерживает загрузку только одного файла за раз. Решение Pure Flask поддерживает несколько файлов, см. Здесь .
2. json отправляется как formdata. например {«data»:{«a»: «string»},{«b»:»string»}}