是否有相应的restful PHP函数的标准?
在水果的restful API中,请求假设如下:是否有相应的restful PHP函数的标准?,php,api,rest,standards,coding-style,Php,Api,Rest,Standards,Coding Style,在水果的restful API中,请求假设如下: /** * @path("/api/fruit") */ class Fruit{ /** * @route({"GET","/"}) * @param({"color","$._GET.color"}) * @param({"limit","$._GET.limit"}) */ function getFruits($color,$limit){ return $oFr
/**
* @path("/api/fruit")
*/
class Fruit{
/**
* @route({"GET","/"})
* @param({"color","$._GET.color"})
* @param({"limit","$._GET.limit"})
*/
function getFruits($color,$limit){
return $oFruit->get(NULL, array('color' =>$color),$limit);
}
/**
* @route({"GET","/*"})
* @param({"id","$.path[2]"})
*/
function getFruitById($id){
return $oFruit->get($id);
}
}
api/水果
api/水果?限值=100
空气污染指数/水果/1
api/水果?颜色=红色
我认为必须有一个标准的功能,做的工作。例如,有些东西可能很容易翻译成fruit.class.php
fruit.class.php
function get ($id, $params, $limit) {
// query, etc.
}
因此,对于我上面的示例,代码如下所示
api/fruit
$fruit = $oFruit->get();
api/水果?限量=100
$fruit = $oFruit->get(NULL, NULL, 100);
api/fruit/1
$fruit = $oFruit->get(1);
api/水果?颜色=红色
$fruit = $oFruit->get(NULL, array('color' => 'red'));
是否有这样的行业标准,或者API/数据库函数总是一团糟?我真的很想标准化我的功能。序曲 对于URL的外观,实际上没有一个标准或约定,几乎涵盖了所有情况 我能想到的唯一标准是(作为应用程序状态引擎的超媒体),它基本上规定客户机应该从以前的请求中派生它可以使用的url。这意味着URL是什么并不重要(但客户端如何发现它们才重要) 如今,REST是一种炒作,人们往往不理解它到底是什么。我建议你特别阅读罗伊·菲尔丁的论文 也是一本好书 PS:(超文本应用程序语言)是实现HATEOAS的标准(除其他外) 接口 因为URL没有标准,所以这个主题的接口也没有标准。这在很大程度上取决于您的需求、品味,也许还取决于您使用什么框架构建应用程序 David Sadowski已经开发了许多库和框架,可以帮助您开发RESTfull应用程序。我建议你看看其中的几个,看看它们是否以及如何解决你遇到的问题。你应该能从他们那里得到一些想法 另外,请阅读我在序言中的参考资料,因为它将使您对构建真正的RESTfull应用程序的应做和不应做的事情有很好的了解
PS:很抱歉没有给你一个简单明确的答案!(我不认为真的存在。)你说的是获取过滤器。我更喜欢 关于内部代码的外观没有任何约定,也没有太多php框架支持“开箱即用”之类的功能。您可以看看magento rest api的实现 您可以使用诸如$model->get($where、$order、$limit)之类的函数调用 但是你应该
- 定义资源属性
- 将资源属性映射到数据库结果字段
- 定义资源支持的筛选器
- 检查筛选器,删除不支持的筛选器并生成相应的$where、$order、$limit
/**
* @path("/api/fruit")
*/
class Fruit{
/**
* @route({"GET","/"})
* @param({"color","$._GET.color"})
* @param({"limit","$._GET.limit"})
*/
function getFruits($color,$limit){
return $oFruit->get(NULL, array('color' =>$color),$limit);
}
/**
* @route({"GET","/*"})
* @param({"id","$.path[2]"})
*/
function getFruitById($id){
return $oFruit->get($id);
}
}
通常,您访问这些方法中的HTTP请求对象,并传递slug变量令牌[例如,
/fruit/:id
]作为方法参数。我不认为有一个普遍接受的标准。大多数情况下,请求处理是由一个人用来传递数据的包决定的。如果你使用一个框架,你可能会遵守该框架的标准。如果是专有的,我想这取决于你的偏好。如果我说有一个标准,它会只需考虑OOP,MVC,并使其可读。把它做好。这正是我所想的,但我最终得到两个结果:一组模型函数,如GETByID、GETBYNAMY、GETBYDATE等,或者我最后得到了一个包含GET($ID,$PARAMs,$LIME)的更长的全功能函数。其中,$params是一个搜索参数数组,我的函数会对其进行排序。我希望有人能给出一个明确的答案,并说明为什么一个结果可能比另一个更好处理。对不起,我不是问url结构,我是问对应的“get”是否有标准“模型功能,谢谢!这很有道理。哦,天哪,我悬赏给了错误的答案!无论如何,谢谢你,至少你得到了正确的答案。不用担心,很高兴我能回答这个问题:)