Web-Services 사용을 위한 "API-Platform"설치 Symfony(4.2)

7120 단어
Symfony(4.2) 프로젝트가 있고 웹 서비스와 설정/통신해야 합니다.
그래서 짧은 검색 후에 웹 서비스를 쉽게 처리할 수 있는 Symfony용 패키지가 있다는 것을 알았습니다.
"API 플랫폼"이라고합니다.

Symfonycast에서 API 플랫폼Symfonycast을 설치하는 방법에 대한 비디오를 찾았습니다.

쉽게 들리니 명령을 쉽게 실행하여 해봅시다.
composer require api:1.2.0
작곡가를 통해 api-platfrom을 설치하려면

... 그리고 다음 메시지와 함께 실패합니다.

require.api is invalid, it should have a vendor name, a forward slash, and a package name. The vendor and package name can be words separated by -, . or _. The complete name should match "^[a-z0-9]([_.-]?[a-z0-9]+)*/[a-z0-9](([_.]?|-{0,2})[a-z0-9]+)*$". 


나에게는 API 레시피를 찾지 못한 것 같습니다. 그래서 Symfony/flex 번들의 github 페이지에서 List of existing recipesRecipeList를 찾았고 그 안에는 "api"레시피가 없었고 "api-platform/core"레시피만 있었습니다. 그래서 다음과 같이 시도했습니다.
composer require api-platform/core
... 이번에는 또 다른 오류 메시지와 함께 실패합니다.

Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - symfony/flex is locked to version v1.6.2 and an update of this package was not requested.
    - symfony/flex v1.6.2 requires composer-plugin-api ^1.0 -> found composer-plugin-api[2.3.0] but it does not match the constraint.
  Problem 2
    - api-platform/core[v2.6.0, ..., v2.6.6] require symfony/http-foundation ^4.4 || ^5.1 -> found symfony/http-foundation[v4.4.0, ..., v4.4.42, v5.1.0, ..., v5.4.9] but the package is fixed to v4.2.12 (lock file version) by a partial update and that version does not match. Make sure you list it as an argument for the update command.
    - api-platform/core[v2.6.7, ..., v2.6.8] require symfony/http-foundation ^4.4 || ^5.1 || ^6.0 -> found symfony/http-foundation[v4.4.0, ..., v4.4.42, v5.1.0, ..., v5.4.9, v6.0.0, ..., v6.1.1] but the package is fixed to v4.2.12 (lock file version) by a partial update and that version does not match. Make sure you list it as an argument for the update command.  
    - Root composer.json requires api-platform/core ^2.6 -> satisfiable by api-platform/core[v2.6.0, ..., v2.6.8].

Use the option --with-all-dependencies (-W) to allow upgrades, downgrades and removals for packages currently locked to specific versions.
You can also try re-running composer require with an explicit version constraint, e.g. "composer require api-platform/core:*" to figure out if any version is installable, or "composer require api-platform/core:^2.1" if you know which you need.


...마지막 문장에서 메시지가 말했듯이 다음과 같이 시도합니다.
composer require api-platform/core:*
...또한 작동하지 않습니다. 메시지:

Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - symfony/flex is locked to version v1.6.2 and an update of this package was not requested.
    - symfony/flex v1.6.2 requires composer-plugin-api ^1.0 -> found composer-plugin-api[2.3.0] but it does not match the constraint.


다음으로 이전 오류 메시지에서도 권장되었던 "--with-all-dependencies"옵션을 사용하여 시도합니다. 그래서 나는 다음을 실행합니다.
composer require api-platform/core:* --with-all-dependencies
... 이전과 같은 오류 메시지로 끝납니다.

Symfonycast 튜토리얼을 다시 살펴봅니다. 페이지에서 튜토리얼에서 사용된 composer.json을 볼 수 있습니다. 나는 symfony 버전이 내 "4.2"와 동일하다는 것을 알았습니다. api-platform/core는 버전 "^2.1"이었습니다. 그래서 "^2.1"버전으로 명령을 시도했습니다.
composer require api-platform/core:^2.1 --with-all-dependencies
... 아니요, 작동하지 않습니다. 오류 메시지:

Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - symfony/flex is locked to version v1.6.2 and an update of this package was not requested.
    - symfony/flex v1.6.2 requires composer-plugin-api ^1.0 -> found composer-plugin-api[2.3.0] but it does not match the constraint.
  Problem 2
    - ocramius/package-versions 1.4.2 requires composer-plugin-api ^1.0.0 -> found composer-plugin-api[2.3.0] but it does not match the constraint.
    - doctrine/doctrine-migrations-bundle 2.1.2 requires doctrine/migrations ^2.2 -> satisfiable by doctrine/migrations[2.2.1].
    - symfony/orm-pack v1.0.8 requires doctrine/doctrine-migrations-bundle * -> satisfiable by doctrine/doctrine-migrations-bundle[2.1.2].
    - doctrine/migrations 2.2.1 requires ocramius/package-versions ^1.3 -> satisfiable by ocramius/package-versions[1.4.2].
    - symfony/orm-pack is locked to version v1.0.8 and an update of this package was not requested.


답답하네요 :/...

다음으로 제가 하려고 했던 것은 이것이 문제가 되기를 바라며 작곡가의 캐시를 지우는 것이었습니다. 난 달린다
composer clearcache오류 메시지 없이 완료한 다음 다시 실행합니다.
composer require api-platform/core:^2.1 --with-all-dependencies
... 아니, 그건 다르지 않아...

좋아, 내가 한 다음 작업은 내 composer.lock 및 내 공급 업체 폴더를 삭제하고 다음을 사용하여 종속성을 완전히 설치하는 것입니다.
composer install
다음 오류. 이번에는 composer가 모든 종속성을 설치한 후 캐시를 지우십시오. 메시지:

Script cache:clear returned with error code 1
!!
!!  In ArrayNode.php line 331:
!!  

!!    Unrecognized options "dir_name, namespace" under "doctrine_migrations". Available options are "all_or_nothing", "check_database_platform", "connection
"
!!    , "custom_template", "em", "factories", "migrations", "migrations_paths", "organize_migrations", "services", "storage".

!!  

!!
!!
Script @auto-scripts was called via post-update-cmd


짧은 Google 검색 후 이 오류는 버전 2.0에서 사용해야 하지만 설치된 3.0인
그래서 나는 composer.json에서 이 패키지의 해당 항목을 버전 2.0으로 변경하고 다음을 실행합니다.
composer update --with-all-dependencies
...오류 메시지 없이 놀라움을 선사합니다.
내 실제 문제에 대한 새로운 희망입니다.
작곡가와 함께 api-platform을 설치하고 싶습니다...

그래서 다시 실행합니다.
composer require api-platform/core:^2.1 --with-all-dependencies
... 그리고 예, 오류 메시지 없이 api-platfrom 의존성을 설치했습니다. 이 일련의 오류(고통) 이후에는 더 이상 그것을 믿지 않았습니다.


보충:
Symfonycast의 튜토리얼을 계속 진행하면서 나는 origin 명령으로 그것을 보았습니다.
composer require api:1.2.0
그들은 api-platform/core 번들뿐만 아니라 도움이 되는 다른 번들도 설치했습니다.

다음 하위 번들을 포함하는 api-platform/api-pack이라는 패키지를 설치합니다.
  • API 플랫폼/코어
  • 넬미오/코르스 번들
  • 심포니/자산
  • 심포니/표현 언어
  • 심포니/옴팩
  • 심포니/보안 번들
  • 심포니/시리얼라이저 팩
  • symfony/twig-bundle
  • 심포니/검증기

  • 나중에 그 묶음도 필요하다고 생각합니다. 따라서 "종속성의 토끼 구멍"으로 돌아가서 다음을 실행합니다.
    composer require api-platform/api-pack:1.2.2 --with-all-dependencies
    ...실행되고 ...또한 성공적입니다. 푸흐 예.

    api-platfrom/core:2.1이 포함된 최신 버전인 api-pack 버전 1.2.2를 사용했습니다.
    작곡가 번들에 대한 정보는 다음에서 찾을 수 있습니다.
    Packagist

    의존 지옥에서 다음에 보자...

    좋은 웹페이지 즐겨찾기