Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

444
Visualizações
Análisis simple de solicitudes sin reqparse.RequestParser()

flask_restful.reqparse ha quedado obsoleto ( https://flask-restful.readthedocs.io/en/latest/reqparse.html ):

Toda la parte del analizador de solicitudes de Flask-RESTful está programada para ser eliminada y será reemplazada por documentación sobre cómo integrarse con otros paquetes que hacen mejor las cosas de entrada/salida (como malvavisco ). Esto significa que se mantendrá hasta la 2.0 pero se considerará en desuso. No se preocupe, si tiene un código que lo usa ahora y desea continuar haciéndolo, no desaparecerá demasiado pronto.

Miré brevemente a Marshmallow y todavía estoy un poco confundido acerca de cómo usarlo si quisiera reemplazar reqparse.RequestParser() . ¿Qué escribiríamos en lugar de algo como lo siguiente:

 from flask import Flask, request, Response from flask_restful import reqparse @app.route('/', methods=['GET']) def my_api() -> Response: parser = reqparse.RequestParser() parser.add_argument('username', type=str, required=True) args = parser.parse_args() return {'message': 'cool'}, 200

(después de media hora de leer más documentación...)

RequestParser examina los valores de request.values de MultiDict de forma predeterminada (aparentemente consulta los parámetros y luego forma los parámetros del cuerpo de acuerdo con https://stackoverflow.com/a/16664376/5139284 ). Entonces solo necesitamos validar los datos en request.values de alguna manera.

Aquí hay un fragmento de código relevante de Marshmallow. Parece mucho más complicado que reqparse : primero crea una clase de esquema, luego crea una instancia y luego hace que cargue la solicitud JSON. Preferiría no tener que escribir una clase separada para cada punto final de la API. ¿Hay algo más ligero similar a reqparse , donde puede escribir todos los tipos de información de validación de argumentos dentro de la función que define su punto final?

 from flask import Flask, request, Response from flask_restful import reqparse from marshmallow import ( Schema, fields, validate, pre_load, post_dump, post_load, ValidationError, ) class UserSchema(Schema): id = fields.Int(dump_only=True) email = fields.Str( required=True, validate=validate.Email(error="Not a valid email address") ) password = fields.Str( required=True, validate=[validate.Length(min=6, max=36)], load_only=True ) joined_on = fields.DateTime(dump_only=True) user_schema = UserSchema() @app.route("/register", methods=["POST"]) def register(): json_input = request.get_json() try: data = user_schema.load(json_input) except ValidationError as err: return {"errors": err.messages}, 422 # etc.
over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Si sus puntos finales comparten algo en común en el esquema, puede usar fields.Nested() para anidar definiciones dentro de cada clase de Marshmallow, lo que puede ahorrar en la escritura de código para cada punto final. Los documentos están aquí.

Por ejemplo, para las operaciones que actualizan un recurso llamado 'Usuario', es probable que necesite un subconjunto estandarizado de información de usuario para realizar la operación, como user_id, user_login_status, user_authorisation_level, etc. Estos pueden crearse una vez y anidarse en nuevas clases para obtener más operaciones de usuario específicas, por ejemplo, actualizar la cuenta de un usuario:

 class UserData(Schema): user_id = fields.Int(required=True) user_login_status = fields.Boolean(required=True) user_authentication_level = fields.Int(required=True) # etc .... class UserAccountUpdate(Schema): created_date = fields.DateTime(required=True) user_data = fields.Nested(UserData) # account update fields...
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda