RESTful-Drupal / restful

RESTful best practices for Drupal
https://drupal.org/project/restful
418 stars 173 forks source link

not able to POST comment on node #1057

Open giteshdang opened 5 years ago

giteshdang commented 5 years ago

Dear Mates, I am trying to post a comment to a node using POST method to the endpoint api/v1.1/comments Note: Endpoint is custom created and copied from restful_example module with my own endpoint url.

/** * @file * Contains \Drupal\restful_example\Plugin\resource\comment\Comments__1_0. */
namespace Drupal\lsd_restful_api\Plugin\resource\comment;

use Drupal\restful\Plugin\resource\ResourceEntity;
use Drupal\restful\Plugin\resource\ResourceInterface;
use Drupal\lsd_restful_api\Plugin\resource\comment\DataProviderCommentNew;

/**
 * Class Comments__1_1
 * @package Drupal\restful_example\Plugin\resource\comment
 *
 * @Resource(
 *   name = "comments:1.1",
 *   resource = "comments",
 *   label = "Comments",
 *   description = "Export the comments with all authentication providers.",
 *   authenticationTypes = {
 *      "token",
 *     "basic_auth"
 *   },
 *   authenticationOptional = TRUE,
 *   dataProvider = {
 *     "entityType": "comment",
 *     "bundles": FALSE,
 *   },
 *   majorVersion = 1,
 *   minorVersion = 1
 * )
 */
class Comments__1_1 extends ResourceEntity implements ResourceInterface {

  /**
   * {@inheritdoc}
   */
  protected function publicFields() {
    $public_fields = parent::publicFields();

    $public_fields['nid'] = array(
      'property' => 'node',
      'sub_property' => 'nid',
    );

    // Add a custom field for test only.

      $public_fields['comment_text'] = array(
        'property' => 'body',
        'sub_property' => 'value',
      );

    return $public_fields;
  }

  /**
   * {@inheritdoc}
   */
  protected function dataProviderClassName() {
    return DataProviderCommentNew::class;
  }

}

This is the body I am sending to POST request:

{
  "nid" : "38565",
  "comment_text" :  "this is comment from API"
}

And here is the error I am getting :

{
    "type": "http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.4",
    "title": "You do not have access to create a new resource.",
    "status": 403,
    "detail": "Forbidden"
}

As you can see above error clearly shows that I do not have access to create new resource. So I have crossed check the permissions and everything seems fine with the commenting permission. Not sure what is happening or what is wrong with the API. Please help me on this. It would really be appreciated. Thank you in advance.

Kind regards