2015-03-09 25 views
5

A volte ho sviluppato un servizio Restful in Java con solo 1 risorsa GET. E 'stata letta in questo modo:Va bene usare lo stesso nome risorsa per get e post rest api

GET http://localhost:8080/my-project/customers/transactions richiesta

Questo GET restituisce tutte le transazioni dei clienti.

Ora, ho un'altra richiesta di progetto in cui si desidera inserire le transazioni dei clienti in uno schema diverso nello stesso database. Ho pensato invece di creare un altro servizio potrei migliorare questo servizio poiché il database sottostante è lo stesso e riguarda le transazioni dei clienti.

Così, ho creato un altro metodo nella mia interfaccia di servizio createCustomerTransactions e sto pensando di chiamarla stesso che la mia richiesta GET, ma questo sarà post come questo:

POST http://localhost:8080/my-project/customers/transactions

Ho provato questo utilizzando Soap-UI e funziona. La mia domanda è il modo giusto per riposare. Va bene avere sia GET che POST che hanno lo stesso URL, internamente sebbene indicheranno metodi diversi e reali? Non sono bravo con i nomi, quindi non posso trovare un altro nome migliore per la risorsa.

risposta

5

riposante quando viene utilizzato con HTTP dipende delle risorse (URL) e contare le azioni i verbi HTTP, è comune e di buone pratiche usato questo verbi per identificare alcune operazioni sulle risorse si dispone:

  • GET recupera tutto o solo una risorsa.
  • Il POST serve normalmente per creare una nuova risorsa.
  • PUT utilizzato per aggiornare una risorsa
  • Cancella Cancella una risorsa

    Uno dei primi compiti che dobbiamo fare prima di iniziare la nostra API ristoratore è identificare quali sono le risorse che abbiamo bisogno di avere e ciò che sarà gli attributi di loro. La prima regola su questo approccio è quello di utilizzare sostantivi non verbi, come persona, biglietto, cliente, ecc ..

Una volta che avete le risorse definite, è necessario identificare quali azioni si applicano a loro e come quelli si assocerebbe alla tua API. I principi RESTful forniscono strategie per gestire le azioni CRUD utilizzando i metodi HTTP mappati come segue.

GET/biglietti - Recupera un elenco di biglietti

GET/biglietti/12 - Recupera un biglietto specifico

POST/biglietti - Crea un nuovo biglietto

PUT/biglietti/12 - Aggiornamenti ticket # 12

PATCH/tickets/12 - Parzialmente aggiornato ticket n. 12 < - verificare questo approccio.

cancellare/biglietti/12 - Elimina biglietto # 12

È possibile che questo dipende dalla configurazione del firewall, ma considerano quanto sopra come un suggerimento per principi di progettazione API.

+0

Grazie per il tuo tempo ma puoi commentare la mia domanda attuale, per lo scenario che ho descritto. Dal tuo campione di GET/ticket e POST/ticket, sembra che io sia sulla buona strada. Sei d'accordo? –

+0

sì, sei nel modo giusto – Koitoer

0

Sì, è possibile. In realtà questo è uno dei fondamenti principali di RESTful desgin. La sua non crude/RPC come i.e. createTransaction o fetchTransaction. I verbi HTTP vengono utilizzati per specificare le azioni sulle risorse.