REST APIs that use HTTP as the transport and communication layer expect GET, POST, GET, PUT, PATCH, and DELETE as the verbs for CRUD operations. The methods are defined in the HTTP1.1 (Method Definitions) and because HTTP2.0 is an evolution of HTTP 1.1 the same verbs will work there (https://tools.ietf.org/html/rfc7540#section-8.1.3)
GET is specifically defined to safely retrieve the value of a field without modifying it. No matter how you use POST, it was never defined to just get the value of a field without side effects.
Using POST for all actions other than GET would make your code unnecessarily complex.
While it’s true that PUT would work the same as POST if the resource with a given identifier doesn’t exist, if the resource exists then you’ll have to code the logic to see if the resource should be updated with the body of the request or completely overwritten (and what to do if there are fields missing in the body you just posted). This could cause data loss if not done carefully or if you make a mistake.
Delete is very dangerous. It can cause unrecoverable data loss if you don’t use it carefully. You would have to add even more code complexity to your post requests if you also want them to handle Delete