And*_*gan 5 javascript php laravel reactjs dingo-api
我们的 Eloquent 模型具有遵循 Laravel 蛇形案例约定的属性。
例如first_name
,last_name
和created_at
虽然我的前端(react)遵循 javascript 驼峰式大小写标准。
例如firstName
,lastName
和createdAt
发送 API 响应时是否有一种简单的方法可以将所有属性转换为驼峰式大小写?
我们使用 Larave 5.2 和 Dingo API 包。
根据接受的答案,我使用了自定义响应格式方法。请参阅以下实施要点(包括单元测试):
https://gist.github.com/andrewmclagan/c5e0fe601d23f3b859b89a9f8922be68
你确实有几个选择。我不会去实现它们(除非需要),但以下是我能想到的一些:
在 Laravel 中:
toArray()
模型上的方法。当模型转换为 JSON 时,它会调用toArray()
. 您可以使用此方法来遍历所有键并将其转换为驼峰命名法。不过,您需要在每个模型上重写它,但这可以通过父类或特征进行抽象。在野狗中:
将Transformers与Response Builder结合使用。您可以为每个模型创建一个转换器,也可以创建一个转换器CamelTransformer
并将其注册到每个模型中。您可以在转换器中将键转换为驼峰命名法。
创建自定义响应格式。您可以创建camelJson
扩展默认 json 格式的响应格式。使用驼峰命名法键的逻辑覆盖必要的方法。
使用ResponseWasMorphed
事件。您可以为以下内容创建一个事件处理程序ResponseWasMorphed
事件创建一个事件处理程序,并在其中对键进行驼峰式命名。
这些选项中的任何一个都应该能够完成这项工作,这只是您希望这些转换的全局性或粒度的问题。例如,修改toArray()
将影响将模型转换为数组(或 json)的所有代码,而不仅仅是响应代码,因此您可能不希望更改是全局的。
我认为自定义响应格式可能是轻松且适合您情况的最佳组合。