class Controller {
public function actionFoo() {
if (is_get) {
return $this->getAction();
} else if (is_post) {
return $this->postAction();
} else if (is_put) {
return $this->putAction();
} else if (is_delete) {
return $this->deleteAction();
}
}
private function getAction() {}
private function postAction() {}
private function putAction() {}
private function deleteAction() {}
}
我目前在用
SlimFramework
做微信的开发及编写一些 Restful API .感觉还不错。你可以了解一下.我是来说反例的,但凡用以下风格实现controller的,实现RESTFul都很不方便
因为RESTFul是对HTTP动作(GET/POST/PUT/DELETE/...)敏感的,用这种风格的Controller的框架来实现就不可避免的会出现以下这种代码
很恶心吧,可惜的是,大部分的框架都是这种风格的Controller实现,差不多都成为标准了
当然了,Laravel也无法免俗。不过Laravel稍微把这个代码优化了一下,大概的逻辑差不多是这样
Laravel里面真正的代码当然不可能是上面这样了,但是逻辑就是这么回事,框架帮你把不同的HTTP verb调用了不同的action,把这个路子套到了classic controller里面去
的确能用,但是不足够好。因为本质上都是从classic controller的角度出发,然后对RESTFul进行迁就的设计
比如一个需求,根据http协议,对一个不支持post的url发起post,应该响应http 405 (method not allowed),这些框架应该怎么做才方便呢?
必须提 Yii2
一提到rest,就非得支持啥put、delete这些请求,感觉很无聊,我认为post和get就能应付的了我们所有的请求了。
因为框架使用的不是很多,所以不太好推荐哪个框架使用起来比较方便,目前自己使用的
YII
实现起来就很方便,但是无论题主最后使用哪个框架,API
都是要根据需求自己来设计实现的,建议题主读下这篇文章:另外,@lenbo_ma 的博文也很值得一读:《HTTP API响应数据规范整理》
楼上吐槽php写API必要有一堆条件判断的朋友,restful这个难道不判断get/post/put/delete条件语句,还有更好的办法吗?
若是说真的好,golang最好
SlimFramework,挺有趣的!赞
推荐一款非常适合RESTful和微服务接口的框架 PHPRS@github
让你在这些场景下彻底摆脱MVC。
看个例子,这是一个可能的订单管理接口实现,只需要编写下面代码,无效额外的继承和配置:
框架通过
@注释
定义路由和绑定参数,另外还有一些有用的高级特性:依赖注入、自动化接口文档、接口缓存等。Apigility by Zend Framework 2.
Phalcon C扩展 简单的路由,超高的效率
居然没看到symfony2的 symfony2
基于symfony2的一些web service的bundle
FOSRestBundle
FOSOAuthServerBundle
JMSSerializerBundle
NelmioApiDocBundle
RequestLimitBundle
RateLimitBundle
BazingaHateoasBundle
KnpJsonSchemaBundle
LexikJWTAuthenticationBundle
ResourceBundle
SerializedResponseBundle
NelmioCorsBundle
还有silex