Php Apigility需要代码连接的REST POST实体的路由\标识\名称

Php Apigility需要代码连接的REST POST实体的路由\标识\名称,php,api,zend-framework2,laminas-api-tools,Php,Api,Zend Framework2,Laminas Api Tools,我似乎只能在调用/merchant/1时创建新实体,但是/merchant将返回405状态 这是我的帖子资源方法: public function create($data) { return $this->mapper->create($data); } 该实体的id是一个自动输入字段,因此对于我来说,客户端不提供标识符是有意义的 下面是我的module.config.php中的一个片段: 'zf-rest' => array( 'MyTest\\V1\\

我似乎只能在调用/merchant/1时创建新实体,但是/merchant将返回405状态

这是我的帖子资源方法:

public function create($data)
{
     return $this->mapper->create($data);
}
该实体的id是一个自动输入字段,因此对于我来说,客户端不提供标识符是有意义的

下面是我的module.config.php中的一个片段:

'zf-rest' => array(
    'MyTest\\V1\\Rest\\Merchant\\Controller' => array(
        'listener' => 'MyTest\\V1\\Rest\\Merchant\\MerchantResource',
        'route_name' => 'MyTest.rest.merchant',
        'route_identifier_name' => 'merchant_id',
        'collection_name' => 'merchant',
        'entity_http_methods' => array(
            0 => 'GET',
            1 => 'PATCH',
            2 => 'PUT',
            3 => 'POST',
        ),
        'collection_http_methods' => array(
            0 => 'GET',
        ),
        'collection_query_whitelist' => array(),
        'page_size' => 25,
        'page_size_param' => null,
        'entity_class' => 'MyTest\\V1\\Rest\\Merchant\\MerchantEntity',
        'collection_class' => 'MyTest\\V1\\Rest\\Merchant\\MerchantCollection',
        'service_name' => 'Merchant',
    ),
我不知道我还能提供什么来帮助你们了解情况,但很乐意在要求时提供更多细节


谢谢您的时间。

所以我添加了POST作为允许的HTTP收集方法,现在它可以用于发布单个实体


不确定这是否是出于设计,但解决了我的问题。

因此我添加了POST作为允许的HTTP收集方法,现在它可以用于发布单个实体


不确定这是否是出于设计,但解决了我的问题。

如果在Restful API上创建新资源,则在收集路径上发布。因此,您应该将
POST
方法添加到
collection\u http\u methods
数组中。这完全符合Restful规范

'collection_http_methods' => array(
    0 => 'GET',
    1 => 'POST',
),
我认为如果你改变,它应该会起作用。 还有一件事,我不知道为什么他们会在文档中这样做,但是我的
http\u方法
数组看起来是这样的:

'collection_http_methods' => array('GET', 'POST')

如果你问我的话会容易得多:)

如果你在Restful API上创建了一个新的资源,你就可以在收集路径上发表文章。因此,您应该将
POST
方法添加到
collection\u http\u methods
数组中。这完全符合Restful规范

'collection_http_methods' => array(
    0 => 'GET',
    1 => 'POST',
),
我认为如果你改变,它应该会起作用。 还有一件事,我不知道为什么他们会在文档中这样做,但是我的
http\u方法
数组看起来是这样的:

'collection_http_methods' => array('GET', 'POST')

如果你问我的话就容易多了:)

应该只允许在集合URI的。。。为什么?在已经存在的实体上发布新实体对Apigility没有意义,在不存在的URI上发布也没有意义。。我不知道你的设置为什么会改变。我想更多的是因为“收藏”这个词让我感到厌烦。我只想发布一个新实体,而不是x个。URL中缺少标识符是我最终尝试使用集合URL的原因,因此从这个角度来看,现在更有意义了。应该只允许在集合URI的。。。为什么?在已经存在的实体上发布新实体对Apigility没有意义,在不存在的URI上发布也没有意义。。我不知道你的设置为什么会改变。我想更多的是因为“收藏”这个词让我感到厌烦。我只想发布一个新实体,而不是x个。URL中缺少标识符是我最终尝试使用集合URL的原因,所以从这个角度来看,现在更有意义了。