Drupal8 REST资源POST方法

Drupal8 REST资源POST方法,rest,drupal-8,Rest,Drupal 8,我需要帮助在Drupal8中使用POST方法实现自定义RESTAPI 我有一个REST资源插件类,其中有一个get()方法。 我能够通过GET方法访问此资源,并且工作正常 我在同一个类中有一个post()方法,但无法通过post方法访问资源,即使通过“RESTUI”模块查看时显示“post” 但当通过POST方法访问时,它显示以下错误 {"message":"No route found for \u0022POST \/iot\/location\/\u0022: Method Not Al

我需要帮助在Drupal8中使用POST方法实现自定义RESTAPI

我有一个REST资源插件类,其中有一个get()方法。 我能够通过GET方法访问此资源,并且工作正常

我在同一个类中有一个post()方法,但无法通过post方法访问资源,即使通过“RESTUI”模块查看时显示“post”

但当通过POST方法访问时,它显示以下错误

{"message":"No route found for \u0022POST \/iot\/location\/\u0022: Method Not Allowed (Allow: GET)"}
我正在使用POSTMAN Chrome扩展,屏幕截图如下

我使用下面的博客来编写RESTAPI,我的代码与本文中显示的代码几乎相同


提前感谢。

确保您在REST资源中设置了
uri\u路径,包括“”

例如,您可能有如下内容:

/**
 * My REST Resource
 *
 * @RestResource(
 *   id = "my_rest_resource",
 *   label = @Translation("My REST Resource"),
 *   uri_paths = {
 *     "canonical" = "/my_rest/resource"
 *   }
 * )
 */
要发布到上面的资源,您可以使用端点
/my\u rest\u资源
。如果您想发布到
/my_rest/resource
,请添加链接关系条目:

/**
 * My REST Resource
 *
 * @RestResource(
 *   id = "my_rest_resource",
 *   label = @Translation("My REST Resource"),
 *   uri_paths = {
 *     "canonical" = "/my_rest/resource",
 *     "https://www.drupal.org/link-relations/create" = "/my_rest/resource"
 *   }
 * )
 */
添加后,可能需要清除缓存。我发现GET可以像第一个示例中预期的那样工作,而POST失败,错误为“405 method not allowed”


Drupal文档()中关于这个主题的措辞可能会更清晰一些。

我也在努力创建一个自定义的POST端点。不幸的是,似乎没有关于创建自定义POST端点的代码或教程,所有内容都集中在现有的核心实体/{entity_type}/{entity}。我认为问题在于不理解@RestResource注释中的“serialization_class”和“deriver”键。我希望我能提供一个答案后,在这里找到它…你有清除缓存?谢谢。你有没有跟踪过我的文件?另外,您使用的是什么版本的Drupal8.x(8.1.x,8.2.x)?可能是rest_ui模块的一个bug。您是否尝试在没有其他ui帮助的情况下自己创建yml文件?