- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
有人可以清楚地解释应该如何使用 FOSRest 为 REST 请求配置路由吗?每个教程似乎都有不同的做法。
我的 Controller :
<?php
namespace Data\APIBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
class DatasetController extends Controller{
protected function postDatasetAction(Request $request){
//Query here
}
URL 应该看起来像这样:Symfony/web/app_dev.php/api/dataset。所以我认为路线应该是这样的……
app/config/routes.yml
data_api:
resource: "@DataAPIBundle/Resources/config/routing.yml"
prefix: /api
type: rest
还有....
Data/APIBundle/Resources/config/routing.yml
data_query:
type: rest
pattern: /dataset
defaults: {_controller: DataAPIBundle:Dataset:datasetAction, _format: json }
requirements:
_method: POST
最佳答案
请按照以下网址阅读官方文档: http://symfony.com/doc/master/bundles/FOSRestBundle/index.html
要开始使用这个包,我会建议遵循single restful controller 文档: http://symfony.com/doc/master/bundles/FOSRestBundle/5-automatic-route-generation_single-restful-controller.html
您还将找到有关此 bundle 可以提供的内容的清晰示例 ( https://github.com/liip/LiipHelloBundle )。
您发布的片段中有几件事引起了我的注意:
您的 Controller 方法的可见性受到保护,而它应该是公开的 (http://symfony.com/doc/current/book/controller.html)
public function postDatasetAction(Request $request) {
// your code
}
为配置路由而创建的“routing.yml”文件应包含上述 Controller 方法的名称(postDatasetAction 而不是 DatasetAction):
# routing.yml
data_query:
type: rest
pattern: /dataset
defaults: {_controller: DataAPIBundle:Dataset:postDatasetAction, _format: json }
requirements:
_method: POST
请在下面找到设置路由的示例:
get_items GET ANY ANY/items.{json}
# config.yml
fos_rest:
allowed_methods_listener: true
format_listener:
default_priorities: ['json', html, '*/*']
fallback_format: json
prefer_extension: true
param_fetcher_listener: true
routing_loader:
default_format: json
view:
formats:
json: true
mime_types:
json: ['application/json', 'application/x-json']
force_redirects:
html: true
view_response_listener: force
# routing.yml
categories:
type: rest
resource: Acme\DemoBundle\Controller\ItemController
<?php
namespace Acme\DemoBundle\Controller
use FOS\RestBundle\Request\ParamFetcher;
use FOS\RestBundle\Controller\Annotations as Rest;
class ItemController
{
/**
* Get items by constraints
*
* @Rest\QueryParam(name="id", array=true, requirements="\d+", default="-1", description="Identifier")
* @Rest\QueryParam(name="active", requirements="\d?", default="1", description="Active items")
* @Rest\QueryParam(name="from", requirements="\d{4}-\d{2}-\d{2}", default="0000-00-00", description="From date")
* @Rest\QueryParam(name="to", requirements="\d{4}-\d{2}-\d{2}", default="0000-00-00", description="End date")
* @Rest\QueryParam(name="labels", array=true, requirements="\d+", default="-1", description="Labels under which items have been classifed")
*
* @Rest\View()
*
* @param ParamFetcher $paramFetcher
*/
public function getItemsAction(ParamFetcher $paramFetcher) {
$parameters = $paramFetcher->all();
// returns array which will be converted to json contents by FOSRestBundle
return $this->getResource($parameters);
}
}
附: : 您将需要添加一个 View 以将资源显示为 HTML 页面
关于php - FOSRestBundle 中的路由是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15260278/
我正在尝试构建 symfony2 rest api,但我正在为 FOSRestBundle 苦苦挣扎 起初我可以制作“@View()”注释,因为它总是会说我的模板丢失,无论我使用什么配置选项我都会得到
对于使用 FOSRestBundle 的 Web 服务,我创建了一个防火墙来强制登录以访问应用程序。 我的问题是,当我通过 ajax 调用 API 时,我需要在用户未通过身份验证时获取错误代码 401
我可以使用@QueryParam()批注获取GET参数,但是看起来它仅适用于查询字符串数据:/user?id=123。 我宁愿像/user/123一样使用它。为此,我可能会使用@Get("/user/
我正在使用FOSRestBundle。我想返回用户信息,但数据信息较少......如何做到这一点?这是我当前的回复 { "id": 1, "user": { "id":
我正在尝试使用 Symfony2 和 FOSRestBundle 来构建 REST 框架,但失败得很惨。 我已完成以下操作: 在我的 deps 文件中: [FOSRest] git=git:/
我正在尝试在 FOSRestBundle 中添加自定义异常控件,但它似乎忽略了我的自定义消息(响应的状态代码正常)。 我有: throw new HttpException(404, "User {$
我使用 Symfony2.2 和 FOSRestBundle 我设置 #app/config/config/yml myapp_rest: resource: "@MyappRestBundl
我正在寻找一个简单、愚蠢的解决方案来强制所有symfony2 的content-type 到application/json fosrestbundle 中的 http 错误消息(如 MethodNo
上下文 我发现了很多关于使用 FOSRest 进行部分 API 响应的问题,所有答案都基于 JMS 序列化程序选项(排除、包含、组等)。它工作正常,但我尝试实现一些不那么“静态”的东西。 假设我有一个
我正在尝试将 FOSRestBundle 集成到我的应用程序中。 我只想在路由匹配时使用它,如 ^/api。 我真的不知道如何使用这个包,而且我认为文档非常糟糕。 (无意冒犯)。 fos_rest:
我在使用 FOSRestBundle 时遇到错误。 Fatal error: Class 'JMS\Serializer\SerializationContext' not found in /hom
我的 fos_rest 部分的配置: fos_rest: serializer: serialize_null: true view: view_res
有人可以清楚地解释应该如何使用 FOSRest 为 REST 请求配置路由吗?每个教程似乎都有不同的做法。 我的 Controller : all(); // returns arra
我是 Symfony (5.3) 的新手,想扩展 RequestBodyParamConverter (FOSRestBundle 3.0.5) 创建一个 REST api。使用 @ParamConv
我正在使用 Symfony2 和 FosRestBundle 为我们的系统开发一个 REST API。FosRestBundle 是一个非常好的工具,但它似乎有一个限制:只有属性(priviate、p
我正在尝试让我的 Controller 与参数 getter 一起工作。我做了文档中指定的所有说明。所以我有:配置fos_rest.yml: fos_rest: param_fetcher_lis
这是我的配置文件: // app/config/config.yml fos_rest: body_listener: array_normalizer: fos_rest.n
config.yml: twig: debug: %kernel.debug% strict_variables: %kernel.debug% exce
我有一个 symfony 应用程序,它提供 RESTful API(用于移动应用程序)并具有后端管理。 我可以通过facebook成功登录后端,但是我应该如何允许通过RESTful API登录? 最佳
我正在使用 symphony a fosrestbundle 开发一个 api。我还想在我的 Controller 中使用构造函数注入(inject),就像我总是注入(inject)一些 Entity
我是一名优秀的程序员,十分优秀!