si prega di seguire il prossimo URL di leggere la documentazione ufficiale: http://symfony.com/doc/master/bundles/FOSRestBundle/index.html
iniziare con questo pacchetto, vorrei suggerire a seguito della unico controller riposante documentazione: http://symfony.com/doc/master/bundles/FOSRestBundle/5-automatic-route-generation_single-restful-controller.html
Troverete anche esempi chiari (https://github.com/liip/LiipHelloBundle) su ciò che questo pacchetto può offrire.
Poche cose dai frammenti che hai postato ha attirato la mia attenzione:
la visibilità del tuo metodo di controllo è protetto mentre dovrebbe essere pubblico (http://symfony.com/doc/current/book/controller.html)
public function postDatasetAction(Request $request) {
// your code
}
Il "routing. yml "Il file creato per configurare il percorso deve contenere il nome del suddetto metodo di controllo (postDatasetAction anziché DatasetAction):
# routing.yml
data_query:
type: rest
pattern: /dataset
defaults: {_controller: DataAPIBundle:Dataset:postDatasetAction, _format: json }
requirements:
_method: POST
Di seguito riportiamo un esempio per impostare un percorso simile:
get_items ottenere qualsiasi QUALSIASI /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);
}
}
P.S. : È necessario aggiungere una vista per visualizzare la risorsa come una pagina HTML
Questa domanda non è chiaro, almeno per me (forse perché non conosco FOSRestBundle) ma, cosa vuoi sapere?Questo sembra abbastanza chiaro: hai un percorso sotto 'yourWebSiteDomain/api/dataset' a cui puoi accedere solo tramite il metodo post e il formato della richiesta dovrebbe essere json. – DonCallisto
Sembra che l'utente stia richiedendo un tutorial canonico su come costruire percorsi in FOSRestBundle. Come menzionato, ogni tutorial su FOSRestBundle gestisce le rotte in modo diverso. In realtà, è necessario che ci sia una singola risorsa (vale a dire, i documenti del progetto) che definisce chiaramente le possibili configurazioni variabili, poiché al momento non è evidente ciò che è possibile. –