Я следую FOSRest documentation по версии API.Как отлаживать маршруты, требующие принимать заголовки?
Однако мне непонятно, как заголовки соединяют его с конкретным контроллером, используя media_type
.
Сейчас я посылаю заголовки: Accept: application/json;version=1.0
с расширением Chrome Почтальон к /api/user/status
Однако я получаю ошибку No route found for "POST /api/user/status"
Вот моя конфигурация:
routing.yml :
type: rest
prefix: /api
resource: Acme\Bundle\SomeBundle\Controller\DefaultController
DefaultController.php:
use FOS\RestBundle\Controller\Annotations\Version;
/**
* @Version("1.0")
* @RouteResource("User", pluralize=false)
*/
class User
...
public function postStatusAction()
config.yml
fos_rest:
versioning:
enabled: true
resolvers:
query: false
custom_header: false
media_type:
enabled: true
regex: '/(v|version)=(?P<version>[0-9\.]+)/'
routing_loader:
default_format: json
view:
mime_types:
json: ['application/json;version=1.0']
format_listener:
enabled: true
консоль отладки: маршрутизатор post_user_status
| Route Name | post_user_status |
| Path | /api/user/status.{_format} |
| Path Regex | #^/api/user/status(?:\.(?P<_format>json|xml|html))?$#s |
| Host | ANY |
| Host Regex | |
| Scheme | ANY |
| Method | POST |
| Requirements | _format: json|xml|html |
| Class | Symfony\Component\Routing\Route |
| Defaults | _controller: AcmeSomeBundle:Default:postStatus |
| | _format: json |
| Options | compiler_class: Symfony\Component\Routing\RouteCompiler |
+--------------+---------------------------------------------------------+
Я также попытался без толку в routing.ymlcondition: "request.attributes.get('version') == '1.0'"
Что мне не хватает?
Ваша ошибка в маршрутизации вы должны изменить 'префикс: api' на' префикс:/api' –
@MohammadZareMoghadam Спасибо, но даже с этим изменением я все еще получаю ту же ошибку – Tek
добавьте в 'format_listener' раздел: '- {path: '^/api', приоритеты: ['json'], fallback_format: json, prefer_extension: false}' –