recherche

Maison  >  Questions et réponses  >  le corps du texte

Meilleur moyen de gérer les identifiants publics et internes dans l'API REST Laravel à l'aide des colonnes UUID et slug

J'ai une table avec un identifiant classique à incrémentation automatique et le nom de l'entreprise. Pour éviter d'exposer l'ID d'entreprise au client, je souhaite utiliser l'UUID. Jusqu'ici, tout va bien. Le seul problème est que pour l'appeler depuis une URL, il est préférable d'utiliser un format plus convivial, comme "api/businesses/my-business" au lieu de "api/businesses/10b940f2-5f8c-42ac-9c35-b6d0de45995b". ". Donc, si j'ajoute une colonne « slug » au tableau pour les requêtes GET tout en utilisant l'UUID pour les mises à jour des données, cela serait-il considéré comme une bonne pratique ?

Dans mon cas, je dois créer un enregistrement dans la table des citations, donc le PATCH sera :

PATCH /api/quotes/4dc93692-0ad9-4131-94fe-b4afec88d037

{
    "business_uuid": "10b940f2-5f8c-42ac-9c35-b6d0de45995b",
    "object": "My quote object",
    "another_column": "Hello",
}

P粉360266095P粉360266095246 Il y a quelques jours363

répondre à tous(1)je répondrai

  • P粉262073176

    P粉2620731762024-03-29 09:51:26

    Si la structure de vos tables de base de données contient iduuidslug, considérez les éléments suivants :

    1. Utilisé uniquement à l'intérieur du backend id.
    2. Utilisez uuid lorsque vous travaillez avec des ressources utilisant l'API REST (CRUD).
    3. Utilisez slug lorsque vous souhaitez gérer des ressources là où il est plus facile pour les humains de lire/reconnaître/comprendre les données. N'oubliez pas que slug doit être unique. Mais pour les opérations CRUD de base entre services, je recommande toujours de continuer à utiliser slug 。不要忘记 slug 必须是唯一的。但对于服务之间的基本 CRUD 操作,我仍然建议继续使用 uuid.

    Je vous recommande également de consulter la documentation Laravel sur Ressources Laravel qui peut vous aider à préparer vos données pour l'API, et le slugify helper dont les fonctions gèrent l'un de vos champs de données.

    répondre
    0
  • Annulerrépondre