Domanda

Supponiamo di avere un negozio online con un " carrello " e voglio implementare un "carrello vuoto" link in modo RESTful.

Per semplicità, supponiamo che le mie risorse siano un carrello che contiene CartItems, ognuno dei quali ha un prodotto. I miei URI potrebbero essere:

# add a product to the current user's Cart
POST /products/product_id/cart_items/

# remove a product from the current user's Cart
DELETE /cart_items/cart_item_id/

In tal caso, quale sarebbe l'URI RESTful per il "carrello vuoto"? link simile?

Invece, potrei pensare al carrello come a un detentore generale di azioni ( come descritto qui ):

# add a product
# form data contains e.g., product_id=123&action=add
POST /carts/cart_id/actions/

# remove a product
# action_id is the id of the action adding product 123
DELETE actions/action_id

# empty cart
# form data contains action=clear
POST /carts/cart_id/actions/

Questo approccio sembra più complicato di quanto debba essere. Quale sarebbe un modo migliore?

È stato utile?

Soluzione

Non seguire il secondo approccio. La canalizzazione di diverse azioni attraverso un endpoint non sembra RESTful IMO.

Hai DELETE / cart_items / cart_item_id / che rimuove cart_item_id dal loro carrello. Che dire di DELETE / cart_items / per cancellare il carrello stesso?

Altri suggerimenti

Aggiunta di un articolo a un carrello:

Carrelli POST / {cartid} / items

Recupero di un articolo specifico dal carrello:

OTTIENI carrelli / {cartid} / items / {itemid}

Eliminazione di un articolo specifico dal carrello:

ELIMINA carrelli / {cartid} / items / {itemid}

Ottenere lo stato del carrello:

OTTIENI carrelli / {cartid} / state

(Potrebbe restituire un valore come 0,1 che indica il numero di articoli nel carrello)

Svuotare il carrello:

PUT carts / {cartid} / state? state = 0

Sembra intuitivo?

DELETE / cart_items / è un'idea interessante che è stata discussa anche qui .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top