Я запустил API Rest с Symfony 4.2 и этим пакетом (FOSRestBundle, JMS Serializer Bundle).У меня есть приложение Angular, которое отправляет много запросов с телом, у которого есть свойство, подобное firstName, но оно не совпадает с моим свойством User, в то время как его свойство имеет имя firstName.
Кроме того, в ответе json все свойства camelCase были изменены.чтобы подчеркнуть Кейс.
Я пробовал так много вещей.Ничего не работаетИзвините за мой английский, надеюсь, вы меня поймете.
Сущность:
class User
{
...
/**
* @ORM\Column(type="string", length=255)
*/
private $firstName;
...
}
Контроллер:
/**
* @Post(
* path = "/users",
* name = "app_user_create"
* )
* @View()
* @ParamConverter("user", converter="fos_rest.request_body")
*/
public function createUser(Request $request, User $user, ObjectManager $em, UserRepository $userRepo, DealRepository $dealRepo)
{
$deal = $dealRepo->find(1);
$user->setRegisteredAt(new \DateTime())
->setDeal($deal);
$em->persist($user);
$em->flush();
$view = $this->view($user, 200)
->setHeader('Access-Control-Allow-Origin', '*');
return $view;
}
jms_serializer.yaml:
jms_serializer:
visitors:
xml_serialization:
format_output: '%kernel.debug%'
fos_rest.yaml:
fos_rest:
view:
formats: { json: true, xml: false, rss: false }
view_response_listener: true
serializer:
serialize_null: true
body_converter:
enabled: true
format_listener:
rules:
- { path: ^/, prefer_extension: true, fallback_format: json, priorities: [json] }
Вот тело моего запроса json:
{
"username": "toto",
"firstName": "tutu", // CamelCase
"name": "toti",
"password": "blabla",
"email": "toto@gmail.com"
}
Вот ответ:
{
"id": 3,
"username": "toto",
"first_name": null, // UnderscoreCase and no matching
"name": "toti",
"password": "blabla",
"email": "toto@gmail.com"
}