Şu anda üzerinde çalıştığım bir uygulama için REST API'si yazıyorum. Uygulama flask kullanarak python ile yazılmıştır. Ben şu var:Python flask ve özel istemci hata iletileri
try:
_profile = profile(
name=request.json['name'],
password=profile.get_salted_password('blablabla'),
email=request.json['email'],
created_by=1,
last_updated_by=1
)
except AssertionError:
abort(400)
session = DatabaseEngine.getSession()
session.add(_profile)
try:
session.commit()
except IntegrityError:
abort(400)
hata işleyicisi şuna benzer: Bir sqlalchemy modeli doğrulayıcı ve benzersiz kısıtlama ile ilgili bir sorun hem belirtmek için hata 400 kullanıyorum
@app.errorhandler(400)
def not_found(error):
return make_response(standard_response(None, 400, 'Bad request'), 400)
veritabanına yazma ve her iki durumda da aşağıdaki hata istemciye gönderilir:
{
"data": null,
"error": {
"msg": "Bad request",
"no": 400
},
"success": false
}
hala (400 iptaline kullanmak için bir yolu var mı) aynı zamanda hatayı, hata işleyicisinin sonuçtaki hata nesnesi için ek bilgi eklemeye başlayabilmesi için bir şekilde ayarlamasını sağladı.
Ben doğrultusunda daha olmasını istiyorum: doğrudan iptale özel bir yanıtını koyabilirsiniz
{
"data": null,
"error": {
"msg": "(IntegrityError) duplicate key value violates unique constraint profile_email_key",
"no": 400
},
"success": false
}
Yup, aradığım şey buydu. Bir "yakalama" gibi bir işleyiciye bağlı olmayan hataları yakalamanın bir yolu var, bu yüzden ben de bunu müşteriye biçimlendirebilir ve halledebilirim? – Asken
anladı. '@ app.errorhandler (Özel Durum)' – Asken
Bu make_response ve standard_response benim için çalışmaz. Ama bu yapar: "def handle_sqlalchemy_error (err): return err.message, 400" –