Sto costruendo una web API che verrà consumata da diversi sistemi interni. Naturalmente i diversi sistemi hanno requisiti diversi. I consumatori possono creare richieste di modifica all'API, quando hanno bisogno di nuove funzionalità. Tutto è nella mia organizzazione. Come faccio a sapere quando una richiesta di modifica è troppo specifica e quando deve essere implementata?
L'API dovrebbe essere una API comune e non specifica per il consumatore , ma verrà utilizzata da diversi sistemi. Quindi diciamo che ho il seguente modello semplice (non posso condividere il mio modello attuale):
public class Customer
{
public int Id;
public Order[] Orders;
}
public class Order
{
public int Id;
public DateTime Date;
public Product[] Products;
}
public class Product
{
public int Id;
public ProductType ProductType;
}
public enum ProductType
{
DVD,
Book,
CD
}
Un consumatore vorrà recuperare tutti gli ordini per un cliente specifico. Quindi scriverò un metodo specifico per questo:
www.myapi/orders/getByCustomer/1
Questa è una cosa abbastanza comune da fare. Il prossimo consumatore desidera recuperare tutti gli ordini per un cliente specifico, ma solo dove ProductType
è DVD
. Sarebbe simile a questo:
www.myapi/orders/getByCustomerAndProductType/1/DVD
Ma aspetta , questo può essere ottenuto usando prima getByCustomer
, e poi lascia filtrare manualmente il consumatore su ProductType
alla fine. Quindi la funzione è già disponibile, ma il consumatore otterrà più dati di quelli effettivamente necessari. Devo accettare la nuova funzione o dovrei chiedere al consumatore di utilizzare il metodo getByCustomer
e filtrare i dati alla fine. Come posso decidere quali responsabilità deve avere il cliente e quando la logica deve essere implementata nell'API? Esistono linee guida generali?
Sto pensando di fornire l'API anche come OData, ma poi il cliente sarà responsabile per le query che non gradiscono.