小编ste*_*eak的帖子

为什么将分页游标或id值编码为字符串是一种常见做法?

例如Facebook Graph API:为什么afterbeforebase64编码的数字?

{
  "data": [
     ... Endpoint data is here
  ],
  "paging": {
    "cursors": {
      "after": "MTAxNTExOTQ1MjAwNzI5NDE=",
      "before": "NDMyNzQyODI3OTQw"
    },
    "previous": "https://graph.facebook.com/me/albums?limit=25&before=NDMyNzQyODI3OTQw"
    "next": "https://graph.facebook.com/me/albums?limit=25&after=MTAxNTExOTQ1MjAwNzI5NDE="
  }
}
Run Code Online (Sandbox Code Playgroud)

与普通数字相比,它可能带来什么好处呢?

如下面的python日志所示,优点不能是数据的简短表示或包含不安全字符的数据:

>>> base64.b64decode("MTAxNTExOTQ1MjAwNzI5NDE=")
'10151194520072941'
>>> len('10151194520072941')
17
>>> len("MTAxNTExOTQ1MjAwNzI5NDE=")
24
Run Code Online (Sandbox Code Playgroud)

base64 cursor facebook-graph-api

10
推荐指数
2
解决办法
877
查看次数

业务逻辑是否应该与模型分开?

我们正在开发一个代码量相当大的 PHP5 项目,上周我开发了一个 RESTful API 的 PoC。我们将模型类与业务类分开。

尝试实现 CRUD 功能,我发现,直接针对模型实现 CRUD 将非常简单,而针对业务逻辑实现它不是,因为它的功能特定于当前现有的视图,并且它的接口不提供实现 API 所需的通用数据访问模型。

想到这里,我想到了以下问题:

  • 与数据交互、保持模型的灵活性保持模型目前不关心的功能(例如在更改电子邮件地址时发送带有激活链接的邮件)的最佳方式是什么?

  • 以前使用 django 进行了大量工作,其中大部分业务逻辑都在模型中实现,为什么还要将业务逻辑分开?你有什么现实生活中的例子吗?如果有的话,这解决了什么问题?

我也想到了一些可能的解决方案:

  • 将整个业务逻辑放入模型中。在调用 save 方法之后/之前检查哪些字段发生了变化。
  • 使用观察者模式通知业务对象模型的变化并直接与模型交互。

你认为有什么优点和缺点,你会怎么做?

php rest model-view-controller design-patterns

6
推荐指数
1
解决办法
1384
查看次数