The idea of REST is that you design your endpoints in a certain way, to represent the logical structure of the things you manipulate, then you use HTTP verbs to express what type of manipulation you're performing.
So for example rather than having /get-image?imageId=X
and /delete-image?imageId=X
endpoints, you should have just an /image/X
endpoint (notice the absence of query parameters), and then the verbs GET/PUT/DELETE encode what you actually want to do with the image.
There are plenty of advantages of this approach (caching, standard tools, etc.), but there are two caveats:
- Not every data/operation fits this hierarchical resource model required by REST. Trying to squeeze it in regardless may result in very awkward APIs. (One example of something that doesn't quite fit is bulk operations.)
- The two things (URLs identify actual resources and verbs are used to identify operations) work in tandem, one without the other makes little sense.