首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在API平台上通过XML创建/定义子资源?

如何在API平台上通过XML创建/定义子资源?
EN

Stack Overflow用户
提问于 2022-01-10 15:42:14
回答 1查看 188关注 0票数 2

我正在尝试使用Api平台通过XML创建子资源。

当我通过实体上的注释定义子资源时,一切都按预期工作:

实体/SocialProfile/SocialProfile.php

代码语言:javascript
复制
/**
 * @ApiSubresource()
 * 
 * @ORM\OneToMany(
 *     targetEntity="SoapSyliusSocialPlugin\Entity\Follow\Follow",
 *     mappedBy="follower",
 *     cascade={ "persist", "remove" }
 * )
 */
protected $following;

一切按预期工作,然后我可以通过下面的路径访问子资源:

/api/v2/social-profiles/35471/followings

但是,当我尝试通过.xml定义这个路由/端点时,如下所示:

Resources/config/api_resources/SocialProfile.xml

代码语言:javascript
复制
<?xml version="1.0" ?>

<resources xmlns="https://api-platform.com/schema/metadata"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="https://api-platform.com/schema/metadata https://api-platform.com/schema/metadata/metadata-2.0.xsd"
>
    <resource class="SoapSyliusSocialPlugin\Entity\SocialProfile\SocialProfile" shortName="SocialProfile">
        <attribute name="validation_groups">sylius</attribute>

        <subresourceOperations>
            <subresourceOperation name="api_social_profiles_followings_get_subresource">
                <attribute name="method">GET</attribute>
            </subresourceOperation>
        </subresourceOperations>

        <property name="following" writable="false" readable="true">
            <subresource resourceClass="SoapSyliusSocialPlugin\Entity\Follow\Follow" />
        </property>


    </resource>
</resources>

我得到了一个:

404没有找到路由

我已经用一个SocialProfile.xml测试了我的itemOperation文件&一切都如期而至。

我已经更新了我的Resources/config/api_resources/SocialProfile.xml如下所示,但我仍然收到一个

找不到

404路由

代码语言:javascript
复制
    <?xml version="1.0" ?>

<resources xmlns="https://api-platform.com/schema/metadata"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="https://api-platform.com/schema/metadata https://api-platform.com/schema/metadata/metadata-2.0.xsd"
>
    <resource class="SoapSyliusSocialPlugin\Entity\SocialProfile\SocialProfile" shortName="SocialProfile">
        <attribute name="validation_groups">sylius</attribute>

        <itemOperations></itemOperations>

        <property name="following" writable="false" readable="true">
            <subresource resourceClass="SoapSyliusSocialPlugin\Entity\Follow\Follow"  collection="true"/>
        </property>

    </resource>
</resources>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-11 10:33:17

保存子资源的实体的配置(在本例中为SocialProfile)。

代码语言:javascript
复制
<?xml version="1.0" ?>

<resources xmlns="https://api-platform.com/schema/metadata"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="https://api-platform.com/schema/metadata https://api-platform.com/schema/metadata/metadata-2.0.xsd"
>
    <resource class="SoapSyliusSocialPlugin\Entity\SocialProfile\SocialProfile" shortName="SocialProfile">
        <attribute name="validation_groups">sylius</attribute>

        <property name="following" writable="false" readable="true">
            <subresource resourceClass="SoapSyliusSocialPlugin\Entity\Follow\Follow" />
        </property>

    </resource>
</resources>

要为子资源配置标准化组,您可以在关系的另一端这样做:

代码语言:javascript
复制
<?xml version="1.0" ?>

<resources xmlns="https://api-platform.com/schema/metadata"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="https://api-platform.com/schema/metadata https://api-platform.com/schema/metadata/metadata-2.0.xsd"
>
    <resource class="SoapSyliusSocialPlugin\Entity\Follow\Follow" shortName="Follow">
        
        <subresourceOperations>
            <subresourceOperation name="api_social_profiles_followings_get_subresource">
                <attribute name="method">GET</attribute>
            </subresourceOperation>
        </subresourceOperations>

    </resource>
</resources>

试试这个。我有一些这样的设置和工作。如果上面有什么问题,应该是因为某些东西与您的类/资源名称不完全匹配,但是您应该能够修改它来修复它。

注意,在您问题中配置的第二个版本中,删除了 all itemOperations。您至少应该有基本的get项操作,以便库能够构建IRIs。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70655072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档