我用 symfony 4.2 和这些包(FOSRestBundle,JMS Serializer Bundle)启动了一个 API Rest。我有一个 Angular 应用程序,它发送许多请求,其主体具有像 firstName 这样的属性,但它与我的 User 属性不匹配,而它的属性名称也是 firstName。
此外,json 响应已将所有 camelCase 属性更改为下划线 Case。
我已经尝试了很多东西。没有任何效果。对不起我的英语,我希望你能理解我。
实体 :
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"
}