Quelle est la manière "RESTful" d'ajouter des opérations non-CRUD à un service RESTful ? Disons que j'ai un service qui permet un accès CRUD aux enregistrements comme ceci :
GET /api/car/123 <- Returns information for the Car object with ID 123
POST /api/car <- Creates a new car (with properties in the request)
PUT /api/car/123 <- Updates car 123 (with properties in the request)
DELETE /api/car/123 <- Deletes car 123
POST /api/car/123/wheel/ <- Creates a wheel and associates it to car 123
Si je veux changer la couleur de la voiture, je dois simplement POST /api/car/123
et inclure une variable POST pour la nouvelle couleur.
Mais disons que je veux acheter une voiture, et que cette opération est plus compliquée que la simple mise à jour de la propriété "voiture possédée" d'un enregistrement "utilisateur". Est-ce RESTful de faire quelque chose comme POST /api/car/123/purchase
où "achat" est essentiellement un nom de méthode ? Ou dois-je utiliser un verbe HTTP personnalisé, tel que PURCHASE
au lieu de POST
?
Ou les opérations non-CRUD sont-elles complètement en dehors du champ d'application de REST ?