"There are no registered paths for namespace "应用程序“。” FosRestBundle,Symfony,POST/DELETE
"There are no registered paths for namespace "App"." FosRestBundle, Symfony, POST/DELETE
我在对我的 API 执行 post 或删除请求时收到这样一条消息 "There are no registered paths for namespace "App""得到作品。我使用 FosUserBundle.
config.yml
...
fos_rest:
body_converter:
enabled: true
validate: true
validation_errors_argument: validationErrors
exception:
enabled: true
exception_controller: 'AppBundle\Controller\ExceptionController::showAction'
param_fetcher_listener: true
routing_loader:
default_format: json
include_format: false
serializer:
serialize_null: true
view:
view_response_listener: force
...
PersonRestController.php
...
class PersonRestController extends AbstractController {
use ControllerTrait;
/**
* @Rest\View()
*/
public function getPersonsAction() {
$data = $this->getDoctrine()
->getRepository(Person::class)
->findAll();
return $data;
}
/**
* @Rest\View(statusCode=201)
* @ParamConverter("person", converter="fos_rest.request_body")
* @Rest\NoRoute()
*/
public function postPersonsAction(Person $person, ConstraintViolationListInterface $validationErrors) {
if (count($validationErrors) > 0) {
throw new ValidationException($validationErrors);
}
$em = $this->getDoctrine()->getManager();
$em->persist($person);
$em->flush();
return $person;
}
/**
* @Rest\View()
*/
public function deletePersonsAction(?Person $person) {
if($person === null) {
return $this->view(null, 404);
}
$em = $this->getDoctrine()->getManager();
$em->remove($person);
$em->flush();
return null;
}
/**
* @Rest\View()
*/
public function getPersonAction(?Person $person) {
if($person === null) {
return $this->view(null, 404);
}
return $person;
}
}
...
错误:
我检查了我的 config.yml。它显示没有重复。
尽管出现错误,POST 方法仍然有效,但 DELETE 无效。
您似乎在 use
语句中使用了 App\
而不是 AppBundle\
(另请检查您的配置文件)。
确保在 config.yml 中包含以下行:
templating:
engines: ['twig']
您还应该扩展 FOSRestController
而不是使用 Trait (FOSRestBundle Step 2: The view layer)
NB :我假设您使用 AppBundle
作为主包,因为您在 config.xml 键 exception_controller
.
我在对我的 API 执行 post 或删除请求时收到这样一条消息 "There are no registered paths for namespace "App""得到作品。我使用 FosUserBundle.
config.yml
...
fos_rest:
body_converter:
enabled: true
validate: true
validation_errors_argument: validationErrors
exception:
enabled: true
exception_controller: 'AppBundle\Controller\ExceptionController::showAction'
param_fetcher_listener: true
routing_loader:
default_format: json
include_format: false
serializer:
serialize_null: true
view:
view_response_listener: force
...
PersonRestController.php
...
class PersonRestController extends AbstractController {
use ControllerTrait;
/**
* @Rest\View()
*/
public function getPersonsAction() {
$data = $this->getDoctrine()
->getRepository(Person::class)
->findAll();
return $data;
}
/**
* @Rest\View(statusCode=201)
* @ParamConverter("person", converter="fos_rest.request_body")
* @Rest\NoRoute()
*/
public function postPersonsAction(Person $person, ConstraintViolationListInterface $validationErrors) {
if (count($validationErrors) > 0) {
throw new ValidationException($validationErrors);
}
$em = $this->getDoctrine()->getManager();
$em->persist($person);
$em->flush();
return $person;
}
/**
* @Rest\View()
*/
public function deletePersonsAction(?Person $person) {
if($person === null) {
return $this->view(null, 404);
}
$em = $this->getDoctrine()->getManager();
$em->remove($person);
$em->flush();
return null;
}
/**
* @Rest\View()
*/
public function getPersonAction(?Person $person) {
if($person === null) {
return $this->view(null, 404);
}
return $person;
}
}
...
错误:
我检查了我的 config.yml。它显示没有重复。 尽管出现错误,POST 方法仍然有效,但 DELETE 无效。
您似乎在 use
语句中使用了 App\
而不是 AppBundle\
(另请检查您的配置文件)。
确保在 config.yml 中包含以下行:
templating:
engines: ['twig']
您还应该扩展 FOSRestController
而不是使用 Trait (FOSRestBundle Step 2: The view layer)
NB :我假设您使用 AppBundle
作为主包,因为您在 config.xml 键 exception_controller
.