【问题标题】:RESTful API resource architecture and syntax; Am I doing it right?RESTful API 资源架构和语法;我做对了吗?
【发布时间】:2011-03-13 22:58:32
【问题描述】:

我正在我的微框架中实现一个 RESTful API 资源架构。我正在建模我的资源路径与对象层次结构并行,利用我最近开发的奇特的路由功能。 (哦,太花哨了!)

我使用的 URI 语法是:

'http:// www.site.com / resource [ ; key1 = param1 [ & key2 = param2 ] ]'

这将允许这样的 URI:

'http://www.site.com/user;id=123/article;id=456'

映射到类似的东西(一旦我将此功能合并到路由器中):

$user->getByParams('id=123')->article->getByParams('id=456');

还有更多的例子:

'GET /user;id=123 GET'
    # read User object data matching id=123

'GET /user;id=123/article;id=456'
    # read Article object data matching id=456
    # belonging to User object matching id=123

'GET /user;name=john&age=20/article;title=hello%20world'
    # read Article object(s) data matching title='hello world'
    # belonging to User object(s) matching name='john' and age=20

我遇到的问题是最后一个问题,将多个结果与查询数据匹配(a' la LIKE in SQL)什么是表示通配符的安全字符?星号 (*) 出现在此处http://labs.apache.org/webarch/uri/rfc/rfc3986.html#reserved 的子分隔符保留列表中,因此它将保持未编码。也许使用 %25 (%) 会更容易

我知道这个问题可能是特定于实现的,但是是否有任何现有的框架可以实现与此类似的 RESTful API 资源架构,我可以参考一下?

另外,我是不是完全违背常规?

【问题讨论】:

    标签: php api rest uri object-relational-model


    【解决方案1】:

    目前关于如何构造带参数的 URI 模板的最佳资源是here

    话虽如此,在尝试进行资源设计时,您确实应该避免考虑 URI 设计。我尝试通过绘制块、命名它们来设计资源,然后绘制箭头来表示连接资源的链接。这类似于您设计网站的方式。

    然后,一旦您的资源和链接被识别,您就可以创建最容易让您的服务器框架解析的任何 URI 方案。

    【讨论】:

    • 感谢 Darrel Miller; 您关于重新考虑我的资源架构的建议已付诸实践。我现在意识到对于我的案例最有用的实现将是 REST/RPC 混合,其中资源 URI 使用与页面控制器的 URI 相同的架构,但是 API 调用跳过页面控制器并通过JSON 请求对象直接发送到模型 ACL 代理(网关)。
    猜你喜欢
    • 2013-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多