我用 Symfony / ApiPlatform 制作了一個 API。我關注了關于查詢過濾器的 ApiPlatform 官方檔案,但我無法使用 ApiFilter“SearchFilter”。
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
use ApiPlatform\Metadata\ApiFilter;
use ApiPlatform\Doctrine\Orm\Filter\SearchFilter;
use ApiPlatform\Doctrine\Orm\Filter\DateFilter;
use ApiPlatform\Core\Annotation\ApiResource;
#[ORM\Entity(repositoryClass: PostRepository::class)]
#[
ApiResource(
graphql: [
//queries
'item_query' => [
'normalization_context' => [
'groups' => ['read:Post']
]
],
'collection_query' => [
'normalization_context' => [
'groups' => ['read:Posts'],
],
'denormalizationContext' => [
'groups' => ['write:Post']
]
],
]
),
]
#[ApiFilter(DateFilter::class, properties: ['date'])]
#[ApiFilter(SearchFilter::class, properties: ['author' => 'exact'])]
Class Post {
//...
#[ORM\ManyToOne(inversedBy: 'posts')]
#[ORM\JoinColumn(nullable: false)]
#[Groups(['read:Post', 'read:Posts'])]
private ?User $author = null;
}
Api 在獲取模式時回傳 500。以下錯誤:
ApiPlatform\Doctrine\Orm\Filter\SearchFilter::__construct(): 引數 #2 ($iriConverter) 必須是 ApiPlatform\Api\IriConverterInterface, ApiPlatform\Core\Bridge\Symfony\Routing\IriConverter 型別,在 ... myway/var/cache/dev/ContainerE6FeJyy/getAnnotatedAppEntityPostApiPlatformDoctrineOrmFilterSearchFilterService.php 第 29 行 Doc ApiPlatform:https ://api-platform.com/docs/core/filters/
我不明白有關“SearchFilter”的問題。“日期過濾器”也可以正常作業。(這不是 gql 支持的問題,因為有了基本的 REST 支持,localhost/api 上的錯誤是相同的)歡迎任何幫助!非常感謝!
uj5u.com熱心網友回復:
因此,我當前版本的 ApiPlatform(已棄用的 v2.6)與 v2.7/v3 中出現的新序列化器注釋之間存在沖突。所以我開始遷移到 apiPlatform 的 v2.7 并糾正了匯入的重大更改,就是這樣。
(另外,$ php bin/console api:upgrade-resource -f幫助我更新了我的物體檔案。)
一切正常。謝謝@HarveyDent,你說得對,這與我的 api-platform 版本有關。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/517987.html
上一篇:服務“SomthingContoller”依賴于不存在的服務“Swag\PluginName\Service\OrderService”
下一篇:結合2系列并在R中洗掉NA
