gpt4 book ai didi

php - 交响乐团 : REST web-service for bots and humans - open questions

转载 作者:行者123 更新时间:2023-12-02 02:32:27 26 4
gpt4 key购买 nike

我正在向 Symfony 应用程序添加一个 API,该应用程序应充当 REST Web 服务。但还有一些 Unresolved 问题。

机器人的不同 URI?

我经常阅读“建议”使用像 /api/:id/[...] 这样的 URI,但我认为它们不符合 REST 标准:无论是机器人还是人类 - i已识别出相同的u独特r资源。

我这么问,是因为我上面的说法有道理,但我不认为其他人都有错。

修改现有 Controller ?

对于这两种情况我需要单独的 Controller 逻辑有几个原因:

  • 在 api 请求的情况下没有 session 登录
  • 必须创建不同的 Symfony 表单(例如,根本不需要任何小部件。)
  • JSON/XML 而不是 HTML 输出

我不想修改现有的 Controller 。根据开放-封闭原则,类应该对扩展开放,但对修改关闭,并且 Controller 类已经在“生产”环境中使用。

我的想法是使用额外的 HTTP header 字段(例如“X-UseApi”)。路由应该通过评估来调用不同的操作。这可以在routing.yml中实现吗?如何?你还有其他想法吗?

身份验证

这就是我实现机器人身份验证的方式:


$user = Doctrine_Core::getTable('sfGuardUser')->findOneByUsername($params['user']);
if($user->checkPassword($params['password']))
{
//...
}

但在我看来,代码看起来像是一个解决方法。对于整个 REST 身份验证问题是否有更好的解决方案? sfGuardPlugin/sfDoctrineGuardPlugin 是否不满足此类用例的条件?

提前致谢并欢呼,鱼刺

最佳答案

我的方法是在路由中使用 sf_format 来区分机器人和人类(机器人可能需要使用 XML,而人类需要 HTML。

我会改变我的 Controller ,根据请求的格式将逻辑委托(delegate)给单独的类(这不应该是太多工作,您将获得所需的灵 active )。

至于身份验证 - 请提供更多有关您现在如何执行此操作的信息 - 该示例不足以让我大致了解您的实现是如何工作的。

关于php - 交响乐团 : REST web-service for bots and humans - open questions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4862540/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com