uriバージョン管理用の設定symfonyFosRestに問題があります...私のfos_rest.yaml:fos_rest:
disable_csrf_role: ROLE_API
param_fetcher_listener: true
view:
mime_types:
# json: ['application/json', 'application/json;version=1.0', 'application/json;version=1.1', 'application/json;version=1.2']
# xml: ['application/xml', 'application/xml']
view_response_listener: 'force'
formats:
xml: true
json: true
templating_formats:
html: true
format_listener:
rules:
- { path: '^/api', priorities: ['json', 'xml'], fallback_format: json, prefer_extension: true }
- { path: ^/, priorities: [ html, json, xml ], fallback_format: ~, prefer_extension: true, stop: true }
versioning:
enabled: true
default_version: v1
resolvers:
media_type:
enabled: true
exception:
codes:
'Symfony\Component\Routing\Exception\ResourceNotFoundException': 404
'Doctrine\ORM\OptimisticLockException': HTTP_CONFLICT
messages:
'Symfony\Component\Routing\Exception\ResourceNotFoundException': true
allowed_methods_listener: true
access_denied_listener:
json: true
body_listener: true
routers.yaml:
users:
type: rest
resource: App\Controller\Api\UsersRestController
prefix: /api/{version}/
name_prefix: api_
tests:
type: rest
resource: App\Controller\Api\TestsRestController
prefix: /api/{version}/
name_prefix: api_
これは機能します:
/**
* @Version("v1")
*/
class TestsRestController extends AbstractFOSRestController {
しかし、これは以下ではありません:
/**
* @Version("v2")
*/
class TestsRestController extends AbstractFOSRestController {
default_versionを変更すると、v1からv2は、v2を宣言した場合にのみ機能します。
手伝ってくれてありがとう
私は解決策を見つけました。
routers.yaml:
controllers:
resource: '../src/Controller/Api/'
type: rest
prefix: /api/{version}/
name_prefix: api_
App \ Controller \ Api \ UserController:
/**
* @RouteResource("User")
*/
class UserController extends AbstractFOSRestController {
public function cgetAction(Request $request) {
$output = [new User(), new User()];
$view = $this->view($output, 200);
return $this->handleView($view);
}
}
また、ユーザーエンティティでJMS \ Serializer \ Annotationsexを使用します。以来またはまで
それで全部です ;)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加