Sto cercando le migliori pratiche sul design RESTful API per il seguente caso d'uso:chiave composito per metodi API REST
oggetto Dominio veicolo:
class Vehicle {
private String vehicleType;
private String colour;
private String transmission;
private String yearOfIssue;
}
Un oggetto esempio:
Vehicle = {vehicleType : 'Car', colour : 'Red', transmission : 'Automatic', yearOfIssue : '2008'};
In questo modello di dominio, non esiste un identificatore univoco di un singolo campo (ad es. VehicleId), ma piuttosto tutti i campi dell'oggetto insieme costituiscono la chiave primaria (questo vincolo è presente nel livello del database) .
Non abbiamo la flessibilità di modificare questo modello di dominio per aggiungere un identificatore univoco a campo singolo.
Quindi la mia domanda è la seguente: se voglio aggiungere una semplice API REST sopra questo oggetto dominio che fornisce funzionalità semplici per CREARE, AGGIORNARE, CANCELLARE e OTTENERE veicoli, qual è la migliore pratica per gli endpoint PATH per questi metodi?
Seguendo l'esempio di cui sopra, se il modello di dominio dovesse avere un singolo campo identificativo univoco VehicleID, quindi posso immaginare i seguenti endpoint:
GET /vehicles/:vehicleId
PUT /vehicles/:vehicleId
DELETE /vehicles/:vehicleId
Io non sono a conoscenza di un modello che esiste simile a questo per chiavi composite come:
GET /vehicles/:vehicleTypecolourtransmissionyearOfIssue
GET /vehicles/CarRedAutomatic2008
sembra errato.
Qualsiasi consiglio su un buon modello da seguire per questo caso d'uso sarebbe molto apprezzato.
Grazie
Utilizzare il percorso è meglio di params per specificare la chiave, perché funziona con qualsiasi verbo. Per esempio è possibile aggiornare utilizzando 'POST/veicoli/Auto/Rosso/Automatico/2008' –
@JohnHenckel secondo http://tools.ietf.org/html/rfc3986#section-3.4, i parametri di query fanno parte dell'URL e come tali dovresti essere in grado di inviare POST anche a loro. vedere https://stackoverflow.com/a/20637055/214446 – mb21