In quale ordine devono essere utilizzati i parametri page e pageSize?

1

Sto costruendo un api e un po 'nello sviluppo mi sono reso conto che cambio costantemente l'ordine dei parametri page e pageSize .

Attualmente uso C # e javascript, quindi la dichiarazione del metodo assomiglia a questo:

public IEnumerable<Order> Get(int pageSize = 9, int page = 1, string name = null)

E il codice cliente:

this.get =  function (name, pageSize, page) {
    // Do stuff..
}

Ma molte volte ho finito per scrivere:

name, page, pageSize // note that page is before pageSize.

E ha anche un endpoint http, che al momento assomiglia a questo (con pageSize prima):

www.example.org/api/orders/9/1

O dovrebbe apparire come questo (con pageSize last):

www.example.org/api/orders/1/9

Qual è il modo logico per chiamare un'api? Impostando prima page o pageSize prima? Esiste una pratica migliore (o comune)?

Argomento per impostare pageSize prima:

  • Il consumatore può semplicemente definire il numero di elementi da recuperare senza impostare la pagina.

Argomento per impostare page prima:

  • Il consumatore può semplicemente spostare la pagina e fare affidamento sui server pageSize.
posta smoksnes 09.09.2016 - 13:38
fonte

1 risposta

1

Richiesto a sinistra. Facoltativo a destra.

Se le lingue che stai utilizzando sono affette da una mancanza di argomenti con nome, devi fare affidamento sulla posizione. Questo è il posizionamento tradizionale.

Ci sono modi per aggirare questo problema. Il Josh builder ti consente di simulare argomenti con nome in queste lingue.

Tuttavia, prima di ricorrere a questo, rivediamo il telescopio di base.

Get(String required1, int required2); // A

Get(String required1, int required2, int optional); // B

In overloading del metodo C # consente a questi di chiamare corpi del metodo separati. Usando questo puoi semplicemente implementare A definendo l'opzionale e passandolo e il resto ad A.

Se il valore predefinito per l'opzionale è semplicemente una costante, questo è un modo pratico per eseguire tutto in uno:

Get(String required1, int required2, int optional = 42); // C

Tuttavia, dal 2010 C # ha avuto argomenti con nome . Ciò significa che i chiamanti possono evitare la confusione posizionale usando i nomi degli argomenti che intendono quando chiamano.

Per te, potrebbe essere il seguente:

Get (name: "MyName", page: 1, pageSize: 9)

Ora l'ordine non ha importanza.

Questo è di fondamentale importanza quando c'è più di un optional con un valore predefinito. Senza argomenti con nome non puoi scegliere quali opzioni lasciare con i loro valori predefiniti.

In Javascript non esiste un vero sovraccarico, ma ci sono alcune buone pratiche . Mettono anche richiesto a sinistra e opzionale a destra.

In genere sono richieste le cartelle URL. Gli optionals di solito vanno nella stringa di query . I fan di gli URL semantici potrebbero argomentare contro questo, ma se vuoi che sia facoltativo, non dovresti richiederlo. Una stringa di query ti consente di avere più opzioni nominative.

    
risposta data 09.09.2016 - 14:56
fonte