我似乎只能在调用/ merchant / 1时创建新实体,但/商家将返回405状态。
这是我的POST资源方法:
public function create($data)
{
return $this->mapper->create($data);
}
此实体的id是auto_incrment字段,因此对我来说,客户端不提供标识符是有意义的。
这是我的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',
),
不确定我还能提供什么来帮助您了解情况,但很高兴根据要求提供更多详细信息。
感谢您的时间。
答案 0 :(得分:2)
所以我添加了POST作为允许的HTTP集合方法,它现在可用于发布单个实体。
不确定这是否符合设计但解决了我的问题。
答案 1 :(得分:2)
如果您在Restful API上创建新资源,则会在收集路径上发布帖子。因此,您应该将POST
方法添加到collection_http_methods
数组中。这完全符合Restful规范。
'collection_http_methods' => array(
0 => 'GET',
1 => 'POST',
),
我认为如果你改变它应该有效。
还有一件事,我不知道为什么他们会在这样的文档中这样做,但我的http_methods
数组看起来像这样:
'collection_http_methods' => array('GET', 'POST')
如果你问我,会容易得多:)