Partager via


Classement des résultats dans REST ($orderby)

L’ordre définit la séquence d’enregistrements retournés et sous-tend la pagination stable. Dans REST, le générateur d’API de données (DAB) utilise le $orderby paramètre de requête pour trier les résultats avant d’appliquer $first ou $after. Si vous omettez $orderby, DAB effectue le tri par défaut par la clé primaire (croissant).

Note

Pour les clés primaires composites, DAB commande par la séquence de colonnes de base de données.

Accédez à la version GraphQL de ce document.

Aperçu

Concept Descriptif
Paramètre de requête. $orderby
Jetons de direction asc, desc
Ordre par défaut Clé primaire croissant
Ordre de plusieurs champs Liste de champs séparés par des virgules
Saut d’égalité Autres champs de clé primaire ajoutés automatiquement

Modèle d’utilisation

GET /api/{entity}?$orderby=FieldA [asc|desc], FieldB desc

Example

Carnets de commandes par année décroissant, puis titre croissant.

GET /api/books?$orderby=year desc, title asc&$first=5

SQL conceptuel

SELECT TOP (5)
  id,
  sku_title AS title,
  year
FROM dbo.books
ORDER BY year DESC, sku_title ASC, id ASC;

Exemple de réponse

{
  "value": [
    { "id": 7, "title": "Dune Messiah", "year": 1969 },
    { "id": 6, "title": "Dune", "year": 1965 },
    { "id": 3, "title": "Foundation", "year": 1951 },
    { "id": 1, "title": "I, Robot", "year": 1950 },
    { "id": 8, "title": "The Martian Chronicles", "year": 1950 }
  ]
}

Règles

Règle Détail
Délimiteur Virgule + espace blanc facultatif
Mots clés de direction asc (par défaut), desc
Respect de la casse Les noms de champs respectent la casse
Champ inconnu Renvoie « 400 Invalid orderby column requested »
Syntaxe non prise en charge Renvoie « 400 OrderBy property is not supported. »

Exemples d’erreurs

Nom de champ non valide :

400 Invalid orderby column requested: publishedYear

Jeton non pris en charge :

400 OrderBy property is not supported.

Interaction avec $select

Lorsque vous triez par un champ qui n’est pas présent, $selectDAB l’extrait en interne pour l’ordre ou la création du curseur, mais l’omet à partir de la charge utile finale.

Configuration appropriée

{
  "entities": {
    "Book": {
      "source": {
        "object": "dbo.books",
        "type": "table"
      },
      "mappings": {
        "sku_title": "title"
      }
    }
  }
}

Exemple de configuration

{
  "runtime": {
    "pagination": {
      "default-page-size": 100,
      "max-page-size": 100000
    }
  },
  "entities": {
    "Book": {
      "source": {
        "type": "table",
        "object": "dbo.books"
      },
      "mappings": {
        "sku_title": "title",
        "sku_price": "price"
      },
      "relationships": {
        "book_category": {
          "cardinality": "one",
          "target.entity": "Category",
          "source.fields": [ "category_id" ],
          "target.fields": [ "id" ]
        }
      }
    },
    "Category": {
      "source": {
        "type": "table",
        "object": "dbo.categories"
      },
      "relationships": {
        "category_books": {
          "cardinality": "many",
          "target.entity": "Book",
          "source.fields": [ "id" ],
          "target.fields": [ "category_id" ]
        }
      }
    }
  }
}

Voir aussi

Concept REST GraphQL Objectif
Projection $select Éléments Choisir les champs à retourner
Filtrage $filter filtre Restreindre les lignes par condition
Tri $orderby orderBy Définir l’ordre de tri
Taille de la page $first first Limiter le nombre d’éléments par page
Continuation $after après Continuer à partir de la dernière page à l’aide d’un curseur

Note

Les mots clés REST commencent par $les conventions OData suivantes.