Folgende Regeln sind einzuhalten:
1) Strikte Verwendung von GET, POST, PUT, DELETE nach Rest Standard:
GET: Holen von Daten, keine Veränderung an der DB
POST: Erzeugen eines Objects in der DB
PUT: Verändern einer Objects in der DB, unter bestimmten Bedingungen kann mit PUT auch ein Object erzeugt werden, dies ist aber im Gegensatz zu POST idempotent, ein zweites PUT erzeugt keinen neuen Datensatz.
DELETE: Löschen eines (ggfls. mehrerer) Objects in der DB.
2) Selbstsprechende "objektorientierte" Pfade, z.B:
einen Baum erzeugen:
POST /tree
einen BAUM verändern:
einen AST am Baum löschen:
DELETE /tree/{treeid}/branch/{branchid}
3) Dabei zusätzliche, nicht unbedingt notwendige Pfadteile soweit wie möglich vermeiden. Insbesondere am Anfang:
Suboptimal:
/botanik/pflanzen/tree/
4) Beispiel Code für einen restservice zur Userverwaltung:
@Path("/user") public class UserService { @GET public List<UserRVO> getUserList(@PathParam("username") String username) throws CommonBusinessException { ... } @POST public UserRVO createUser(UserRVO userRVO) throws CommonBusinessException { ... } @GET @Path("/{username}") public UserRVO getUser(@PathParam("username") String username) throws CommonBusinessException { ... } @PUT @Path("/{username}") public UserRVO updateUser(@PathParam("username") String username, UserRVO userRVO) throws CommonBusinessException { ... } @DELETE @Path("/{username}") public UserRVO deleteUser(@PathParam("username") String username) throws CommonBusinessException { ... } @PUT @Path("/{username}/password") public Response setPassword(@PathParam("username") String username, PasswordChangeRVO passwordChange) { ... } }