In Magento 2.3, a POST method controller can be created by implementing Magento\Framework\App\Action\HttpPostActionInterface.
But If we have lots of POST controllers in our Module, then there will need to implement this Interface in all Controllers.
So, In this article, we will explain to you an easy and efficient way to create POST controllers in Magento 2.3.
Firstly, create an ApiController Class, which is implementing \Magento\Framework\App\CsrfAwareActionInterface and in this class, we have implemented two methods named as createCsrfValidationException and validateForCsrf.

 

namespace Vendor\Module\Controller;

use Magento\Framework\Controller\ResultFactory;
use Magento\Framework\App\RequestInterface;
use Magento\Framework\App\Request\InvalidRequestException;

abstract class ApiController extends \Magento\Framework\App\Action\Action implements \Magento\Framework\App\CsrfAwareActionInterface
{
protected $_helper;

public function __construct(\Magento\Framework\App\Action\Context $context ) {
parent::__construct($context);
}
/** * @inheritDoc */
public function createCsrfValidationException( RequestInterface $request ): ? InvalidRequestException {
return null;
}
/** * @inheritDoc */
public function validateForCsrf(RequestInterface $request): ?bool {
return true;
}
}

 

Then, we extend the ApiController class in our POST/GET method controllers.

namespace Vendor\Module\Controller\Contact;
class Post extends \Vendor\Module\Controller\ApiController {
  public function execute() {     // write your code here  } }