简体   繁体   中英

RESTful way to “pay for product”

I'm designing the architecture for my e-commercial sites. I've designed RESTful interface for product management, but the feature "pay for product" is not so natural in RESTful way in my opinion. Could someone give me an idea? How to design it?

Paying for things is not idempotent; users really care how often it happens. As such, it maps to a POST in the RESTful model. That can then result in the creation of a record of the transaction which can be handled by GET, etc.

Fortunately, one of the popular teaching examples for REST deals with a customer interaction - How to GET a Cup of Coffee . Reading that should give you a sense for how you should design your interface for paying for a product, using a RESTful architecture.

In a RESTful design, the client is will be guided through the process by hypermedia.

The resource-oriented architecture focuses on nouns rather than verbs (vs. remote method invocation and service-oriented architecture). Taking a hint from Donal Fellows' answer, the RMI idea is "pay for a product"; the RESTful idea is "create a transaction". This is a "transaction" in the sense of buying something at a store, but it is related to the database kind of "transaction".

You can also think of the familiar "shopping cart" as a RESTful resource, and the product itself is a RESTful resource. It's perfectly OK for the RESTful resources to be able to "do things", like:

POST /cart/{id of cart}/acceptproduct/{id of product}

Although you could do something like this:

GET /cart/{id of cart}

(add products to the representation of the cart)

PUT /cart/{id of cart}

The user's charge account is yet another RESTful resource, to which you can post charges. (Pun intended.)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM