Bibliothèque nationale de France
Pour les professionnels
SRU (Search/Retrieval via URL)
Traduction libre de http://www.loc.gov/standards/sru/specs/transport.html
Le client peut envoyer une requête SRU par la méthode http GET.
Une URL est construite et envoyée au serveur avec des paramètres prédéterminés dont la signification est prédéterminée. Si des caractères Unicode doivent être encodés, il y a des contraintes supplémentaires décrites ci-dessous.
La réponse doit être un flux XML conforme au schéma de réponse de l’opération. SRU par HTTP GET peut donc être décrit comme le cas le plus simple de XML par HTTP.
Exemple d'informations transmises sur le réseau
GET /voyager?version=1.2&operation=searchRetrieve&query=dinosaur HTTP/1.1 Host: z3950.loc.gov:7090
Syntaxe
Une requête SRU (quand elle est transportée par HTTP GET) est une URI décrite dans la recommandation RFC 3986 (Voir Note 1). En particulier, c’est une HTTP URL (telle que décrite dans la section 3.3 de la recommandation RFC 1738 ; il y a néanmoins des notes supplémentaires sur l’encodage des caractères ci-dessous). Dans la partie portant la recherche de l’URI, elle utilise l’encodage standard des paramètres et des valeurs sous la forme nomduparametre=valeur du parametre et séparation des paramètres par l’esperluette (&).
Les paramètres des diverses opérations, pour la partie portant la recherche de l’URL (l’information qui suit le point d’interrogation), sont décrits dans leur propre section.
Encodage
La procédure suivante est recommandée pour encoder les caractères, en particulier pour rendre utilisables les caractères UNICODE (caractères du Universal Character Set, ISO 10646) au-delà de U+007F, qui ne sont pas valides dans les URI. Ce n’est théoriquement utile que pour le paramètre de recherche (query) de l’opération searchRetrieve et le paramètre scanClause de l’opération Scan :
À noter : dans l’étape 2, il est recommandé d’encoder avec % tous les caractères qui ne font pas partie de l’ensemble non-reservé des URI, c’est-à-dire tous sauf les caractères alphabétiques, les chiffres et les quatre caractères spéciaux suivants : tiret (-), point (.), tiret bas (_), tilde (~). Ce faisant, certains caractères peuvent être encodés en codage URL alors que ce n’est pas nécessaire. – Par exemple il n’est pas nécessaire d’encoder le point d’interrogation (?) présent dans une valeur de paramètre, mais c’est plus sûr. Dans le doute, utiliser le codage URL.
Exemple
query=dc.title =/word kirkegård
Le nom du paramètre est « query » et la valeur est « dc.title =/word kirkegård »
À Noter que le premier « = » (suivant « query ») ne doit pas être encodé avec % parce qu’il est utilisé comme délimitation dans l’URI ; il ne fait pas partie du nom du paramètre ou de sa valeur. Le second « = » (précédant le slash « / ») doit être encodé car il fait partie de la valeur.
Les caractères suivants doivent être encodés :
Le paramètre qui résulte de cet encodage et qui doit être envoyé au serveur sera :
query=dc.title%20%3D%2Fword%20kirkeg%C3%A5rd.
Traitement de l'information par le serveur
À Noter :
1. La recommandation RFC 1738 est remplacée par RFC 3986. Néanmoins RFC 1738 décrit le schéma d’URI ‘http:’ et RFC 3986 ne le fait pas, indiquant qu’un document autonome doit être écrit pour cela, mais celui-ci ne l’a pas encore été. Aussi n’y a-t-il pour l’instant aucune référence normative valide pour le schéma d’URI ‘http:’ et c’est à RFC 1738 qu’il faut faire référence. Quand une référence normative valide existera, elle sera citée ici.
Au lieu de construire une URL, les paramètres peuvent être envoyés au serveur par la méthode POST. L’en-tête du type de contenu (Content-type header) est « application/x www form urlencoded ». Il est différent de la valeur « text/xml » utilisée pour SRU par SOAP décrit ci-dessous, et peut être utilisé pour distinguer les deux modes de transport pour le même point d’accès.
POST a plusieurs avantages sur GET pour transmettre les requêtes au serveur :
La réponse à SRU par POST est identique à la réponse à SRU par GET : un document XML.
Exemple d'informations transmises sur le réseau
POST /voyager HTTP/1.1
Host: z3850.loc.gov:7090
Content-type: application/x-www-form-urlencoded; charset=iso-8859-1 Content-length: 51
version=1.1&operation=searchRetrieve&query=dinosaur
« SRU par HTTP SOAP » est le nouveau nom de « SRW »
SRU par SOAP est une passerelle vers la Recommandation SOAP (version originale en anglais, version française) du W3C. Dans ce mode de transport, la requête est encodée en XML et enveloppée dans des éléments additionnels spécifiques à SOAP. La réponse est le même document XML que pour SRU par GET ou POST, mais enveloppé dans des éléments additionnels spécifiques à SOAP.
Avantages
Spécifications
Cette spécification cherche à être conforme aux recommandations Web Services Interoperability.
Différences de paramètres
Il y a des différences entre les paramètres qui peuvent être transportés par le « SOAP Binding » [ndt : voir la spécification http://www.w3.org/TR/ws-addr-soap/ du W3C].
Exemple d'une requête SOAP
jeudi 2 août 2012