Come si genera un buon ID nei documenti ATOM?
-
02-07-2019 - |
Domanda
Apparentemente usare l'URL non va bene - perché è questo il caso e come si genera uno buono?
Soluzione
L'articolo di Mark Pilgrim Come creare un buon ID in Atom è buono. Eccone una parte:
Perché non dovresti & # 8217; t utilizzare il permalink come ID Atom
È & # 8217; s valido per usare il tuo URL permalink come il tuo < id > ;, ma lo scoraggio perché può creare confusione quale elemento dovrebbe essere trattato come permalink. Gli sviluppatori che non leggono & # 8217; t le specifiche guarderanno il tuo feed Atom e vedono due pezzi identici di informazioni e ne scelgono una e la usano come il permalink e alcuni di loro sceglierà in modo errato. Quindi vanno a un altro feed in cui i due elementi non sono identici e ottengono confuso.
In Atom, < link rel = " alternate " > è sempre il permalink della voce. & Lt; & Id gt; è sempre un identificativo univoco per l'entrata. Entrambi sono richiesti, ma loro servire a scopi diversi. Un ID voce non dovrebbe mai cambiare, anche se il modifiche permalink.
& # 8220; Modifiche permalink & # 8221 ;? Sì, permalink non sono permanenti come potresti pensare. Qui & # 8217; s un esempio che è successo per me. I miei URL permalink erano generato automaticamente dal titolo della mia voce, ma poi ho aggiornato un voce e ha cambiato il titolo. Indovina cosa, il & # 8220; permanente & # 8221; link solo cambiato! Se sei & # 8217; sei intelligente, puoi usarlo un reindirizzamento HTTP per reindirizzare i visitatori dal vecchio permalink a quello nuovo (e l'ho fatto). Ma puoi & # 8217; t reindirizzare un ID.
L'ID di una voce Atom non deve mai modificare! Idealmente, dovresti generare l'ID di una voce una volta e salvarla da qualche parte. Se & # 8217; si sta generando automaticamente di volta in volta dai dati che cambia nel tempo, quindi la voce & # 8217; s ID cambierà, il che sconfigge il scopo.
Altri suggerimenti
Utilizza un GUID per l'ID.
dipende dalla lingua utilizzata, ma è possibile utilizzare
System.Guid per .NET.