我正在寻找一种方法来包装api的默认功能在我的基于php的web应用程序,数据库和cms。
我环顾四周,发现了几个“骨架”框架。除了我的问题的答案,还有主音,我喜欢它,因为它是一个非常轻量级的REST框架。
我最喜欢REST,因为它简单,并希望基于它创建一个API体系结构。我正在努力理解基本原理,但还没有完全理解。因此,有一些问题。
1. 我理解得对吗?
假设我有一个资源“用户”。我可以像这样设置一些uri:
/api/users when called with GET, lists users
/api/users when called with POST, creates user record
/api/users/1 when called with GET, shows user record
when called with PUT, updates user record
when called with DELETE, deletes user record
到目前为止,这是RESTful体系结构的正确表示吗?
2. 我需要更多的动词
创建、更新和删除在理论上可能已经足够了,但实际上我需要更多的动词。我知道这些东西可以被嵌入到更新请求中,但它们是特定的操作,可以有特定的返回代码,我不想把它们都扔到一个操作中。
在用户示例中想到的一些是:
activate_login
deactivate_login
change_password
add_credit
我该如何表达像RESTful URL体系结构那样的动作呢?
我的直觉是对URL进行GET调用
/api/users/1/activate_login
并等待状态码返回。
但是,这偏离了使用HTTP谓词的想法。你怎么看?
3.如何返回错误消息和代码
REST的美妙之处很大一部分来自于它对标准HTTP方法的使用。在出现错误时,我发出一个带有3xx、4xx或5xx错误状态码的报头。对于详细的错误描述,我可以使用正文(对吗?)到目前为止一切顺利。但是,如何传输更详细地描述错误的专有错误码呢?“连接数据库失败”或“数据库登录错误”)?如果我将它与消息一起放入正文中,我必须在之后解析它。这种事情有标准的标题吗?
4. 如何进行身份验证