mirror of https://github.com/tiangolo/fastapi.git
✨ By default, encode by alias (#168)
This commit is contained in:
parent
cefe6cf92c
commit
9e748dbca4
|
|
@ -10,7 +10,7 @@ def jsonable_encoder(
|
||||||
obj: Any,
|
obj: Any,
|
||||||
include: Set[str] = None,
|
include: Set[str] = None,
|
||||||
exclude: Set[str] = set(),
|
exclude: Set[str] = set(),
|
||||||
by_alias: bool = False,
|
by_alias: bool = True,
|
||||||
include_none: bool = True,
|
include_none: bool = True,
|
||||||
custom_encoder: dict = {},
|
custom_encoder: dict = {},
|
||||||
sqlalchemy_safe: bool = True,
|
sqlalchemy_safe: bool = True,
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ from enum import Enum
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
from fastapi.encoders import jsonable_encoder
|
from fastapi.encoders import jsonable_encoder
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel, Schema, ValidationError
|
||||||
|
|
||||||
|
|
||||||
class Person:
|
class Person:
|
||||||
|
|
@ -59,6 +59,10 @@ class ModelWithConfig(BaseModel):
|
||||||
use_enum_values = True
|
use_enum_values = True
|
||||||
|
|
||||||
|
|
||||||
|
class ModelWithAlias(BaseModel):
|
||||||
|
foo: str = Schema(..., alias="Foo")
|
||||||
|
|
||||||
|
|
||||||
def test_encode_class():
|
def test_encode_class():
|
||||||
person = Person(name="Foo")
|
person = Person(name="Foo")
|
||||||
pet = Pet(owner=person, name="Firulais")
|
pet = Pet(owner=person, name="Firulais")
|
||||||
|
|
@ -85,3 +89,13 @@ def test_encode_custom_json_encoders_model():
|
||||||
def test_encode_model_with_config():
|
def test_encode_model_with_config():
|
||||||
model = ModelWithConfig(role=RoleEnum.admin)
|
model = ModelWithConfig(role=RoleEnum.admin)
|
||||||
assert jsonable_encoder(model) == {"role": "admin"}
|
assert jsonable_encoder(model) == {"role": "admin"}
|
||||||
|
|
||||||
|
|
||||||
|
def test_encode_model_with_alias_raises():
|
||||||
|
with pytest.raises(ValidationError):
|
||||||
|
model = ModelWithAlias(foo="Bar")
|
||||||
|
|
||||||
|
|
||||||
|
def test_encode_model_with_alias():
|
||||||
|
model = ModelWithAlias(Foo="Bar")
|
||||||
|
assert jsonable_encoder(model) == {"Foo": "Bar"}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue