Quelle est la manière «RESTful» d'ajouter des opérations non CRUD à un service RESTful? Disons que j'ai un service qui permet à CRUD d'accéder à des enregistrements comme celui-ci:
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 voudrais simplement POST /api/car/123
et inclure une variable POST pour la nouvelle couleur.
Mais disons que je veux acheter une voiture, et 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-il RESTful de simplement faire quelque chose comme POST /api/car/123/purchase
, où «achat» est essentiellement un nom de méthode? Ou devrais-je utiliser un verbe HTTP personnalisé, comme PURCHASE
au lieu de POST
?
Ou les opérations non CRUD sont-elles complètement hors du champ d'application de REST?
PATCH /api/car/123
et d'envoyer un paramètre de couleur OU d'utiliserPUT /api/car/123
et d'envoyer tout l'objet voiture. POST inférerait que vous créez une nouvelle voiture et ne devrait probablement jamais inclure un identifiant à la fin de l'URL