Come comunicare con un URI qual è il tipo di contenuto della risorsa?

1

Vorrei utilizzare gli URI per rappresentare diversi file che possiamo usare nel nostro sistema. Ma per sapere quale modulo utilizzare per analizzarlo, sarebbe bello se potessi in qualche modo codificare il tipo di contenuto della risorsa a cui punta, in modo che possa essere dato a un modulo appropriato per l'analisi.

Stavo pensando di estendere la parte dello schema per trasmettere questo. Ad esempio file+csv:///path/to/file punta a un file CSV, mentre file+caffe:///path/to/directory punta a una directory con il modello e i parametri Caffe. E così via. Ho un set limitato di tipi che voglio supportare, quindi questo sembra un modo ragionevole?

Ma esiste un altro modo standard?

    
posta Mitar 08.12.2017 - 00:53
fonte

1 risposta

1

Gli URL di per sé sono molto indipendenti dal protocollo. Non specificano molto più di una sintassi comune e semantica di base. Un URL generalmente descrive come trovare qualcosa, ma non quello che troverai lì.

È compito di un particolare protocollo come HTTP indicare il tipo di contenuto. Alcune risorse non hanno un tipo di contenuto significativo, ad esempio mailto: URL. Il protocollo FTP non ha alcun concetto di tipi MIME, ma si limita a distinguere i file testuali, i file binari e le directory (specificato come parametro ;type=<typecode> in un URL FTP). Per quanto riguarda gli URL dei file, le note Uniform Resource Locators (URL) di RFC 1738:

The file URL scheme is unusual in that it does not specify an Internet protocol or access method for such files; as such, its utility in network protocols between hosts is limited.

RFC 8089 Il "file" Schema URI consente:

The file URI scheme is not coupled with a specific protocol nor with a specific media type [RFC6838].

Quindi la maggior parte degli schemi URL non ti consente di includere il tipo di contenuto nell'URL e non esiste un meccanismo agnostico per lo schema.

Ovviamente puoi sviluppare il tuo schema URL non standard che consiste di tipo MIME + trasporto. Sarebbe meglio non inserire il tipo nel nome dello schema: considererei un disegno come example:text/csv:file://path/to/file .

In alternativa, è possibile memorizzare il tipo in una query param di un URL di file, eccetto che una sintassi URI di file come definita dalla RFC non ha parametri di query. Questo può anche portare a problemi con alcune implementazioni su sistemi Windows. Ma questo ha il vantaggio che i parametri di query per gli URL dei file vengono ignorati dai parser che utilizzano l'algoritmo di analisi degli URL generico di WHATWG . .

    
risposta data 10.12.2017 - 16:27
fonte

Leggi altre domande sui tag