Mi sto preparando a configurare una risorsa per alcune nuove chiamate API alla mia applicazione rails.
Sto pianificando di chiamare i dispositivi delle risorse, cioè
resources :devices
Questo rappresenterà i dispositivi mobili Android
So che questo mi procurerà percorsi come
Dispositivi GET /: id
Nella maggior parte dei casi: id sarebbe un numero intero che rappresenta la chiave primaria e nel controller useremo: id come tale:
GET devices/1
@device = Device.find(params[:id])
In questo caso vorrei usare: id come google_cloud_messaging_reg_id
Quindi vorrei avere richieste come questa:
GET devices/some_long_gcm_id
e poi nel controller, solo noi params[:id]
per cercare il dispositivo tramite l'ID di registrazione gcm. Questo sembra più naturale, dal momento che il dispositivo saprà che è id gcm piuttosto che è l'ID intero dei binari. Ci sono dei motivi per evitare di farlo?
-------------------------------------------- -------------------------
UPDATE:
La mia preoccupazione iniziale era che vedere un percorso (tramite rake route) di / devices /: id o guardare il controller e vedere i parametri [: id] sarebbe stato confuso poiché la maggior parte avrebbe dovuto assumere: id era la chiave primaria intera.
Dopo averci pensato un po 'di più e aver letto la risposta di Idan Arye in basso, il mio pensiero attuale è quello di creare percorsi come mostrato di seguito. Questo mi procurerà percorsi (tramite percorsi rake) che assomigliano a questo:
GET /api/v1/android_devices/:gcm_reg_key(.:format)
che a mio avviso chiarisce in qualche modo che: gcm_reg_key potrebbe non essere un numero intero di chiavi primarie . E nel controller il parametro sarebbe
params[:gcm_reg_key]
Ancora una volta, penso che questo chiarisca in qualche modo che il parametro non può essere una chiave primaria intera (la convenzione sarebbe params [: id])
Qualsiasi altro suggerimento o suggerimento è benvenuto.
match '/android_devices/:gcm_reg_key', to: 'android_devices#show' , via: :get, as: 'android_device'
match '/android_devices/:gcm_reg_key', to: 'android_devices#update', via: :post, as: 'android_device_create'
match '/android_devices/:gcm_reg_key', to: 'android_devices#update', via: :patch, as: 'android_device_modify'
match '/android_devices/:gcm_reg_key', to: 'android_devices#destroy', via: :delete, as: 'android_device_destroy'
resources :android_devices , only: [:create, :index]