Créer des applications mobiles basées sur la recherche avec les interfaces REST de navigation et de journalisation des événements

SharePoint présente les interfaces REST de navigation et de journalisation des événements, qui vous permettent de créer une application mobile pilotée par la recherche pour des appareils mobiles tels que des téléphones et des tablettes qui s’exécutent sur des systèmes d’exploitation autres que Windows, par exemple, Android et iOS.

Fonctionnement des applications avec le catalogue de produits

Un catalogue de produits peut être affiché sur un appareil mobile de différentes façons. Traditionnellement, vous pouvez configurer un canal mobile pour le catalogue de produits dans SharePoint. La création d’un canal mobile vous permet d’adapter une apparence qui correspond à n’importe quelle taille d’écran sur un appareil mobile. La page résultante est consultée dans . Format ASPX à l’aide du navigateur web sur l’appareil mobile. La structure des pages et leur logique correspondante sont gérées par le serveur exécutant SharePoint. En revanche, une application créée avec les interfaces REST navigation et journalisation des événements est pilotée par la recherche et agit comme un front-end pour parcourir les structures du catalogue de produits.

Une application n'est pas un programme autonome, mais il fonctionne avec un catalogue de produits définis dans une installation SharePoint existante. L'application peut mettre à jour la structure de navigation dynamique si le catalogue de produits a changé dans cette installation SharePoint particulier. En outre, cliquez sur événements effectuées par l'utilisateur sont envoyées au serveur exécutant SharePoint afin d'améliorer la qualité globale de recommandations effectuées par le catalogue de produits.

L'application construit les pages requis par l'utilisateur d'afficher le catalogue de produits sans l'aide d'un navigateur web. Les pages maîtres, mises en page et logique pour construire les pages pour afficher le catalogue de produits sont téléchargés sur des périphériques sous la forme d'une application ; Ces pages sont réutilisées chaque fois que l'utilisateur exécute l'application. Pendant que l'utilisateur navigue le catalogue de produits, l'application simultanément construit une structure de navigation et définit les pages. Pour remplir les pages appropriées avec le contenu de l'élément, les requêtes de recherche sont envoyées au catalogue de produits dans SharePoint. Les résultats de recherche correspondant sont ensuite utilisés pour remplir les pages.

Exemple : Création d'une application mobile pilotés par la recherche avec d'accueil, la catégorie et élément de page de détail

Supposez que vous disposez d'une application mobile avec trois types de pages : une page d'accueil, des pages de catégorie et pages de détails d'élément. Les sections suivantes décrivent comment les interfaces de Navigation, l'enregistrement des événements et REST de recherche sont utilisées pour créer les pages.

Page d'accueil d'une application mobile pilotée par recherche

En règle générale, la page d'accueil s'affiche au démarrage de l'application. La page d'accueil contient le menu de catalogue de produits, du texte et une image statique, comme le montre la Figure 1.

Figure 1. Page d'accueil d'une application mobile pilotée par recherche

Diagramme montrant l’application mobile communiquant avec un appel HTTP de navigation REST à Share Point, ce qui donne une réponse de la structure de navigation.

Pour créer cette page, l'application envoie un appel REST de Navigation sur le serveur exécutant SharePoint qui demande la structure de navigation du catalogue de produits. Ensuite, l'application utilise les données de réponse pour définir la taxonomie correct ou la structure du menu et affiche les noms des termes corrects pour le catalogue de produits. Contenu supplémentaire, tel que la mise en page, le texte du titre et des images statiques sont stockés dans l'application elle-même. Si la taxonomie est modifiée à une date ultérieure, l'application peut être mis à jour avec le reste de la Navigation des appels lorsqu'elle est exécutée.

Voici un exemple d'un appel REST de Navigation par défaut.


GET http://server/_api/navigation/menustate?mapprovidername='GlobalNavigationSwitchableProvider'

Une réponse correspondante est affichée dans Exemple de réponse pour un appel REST de navigation pour une application mobile.

Page de catégorie pour une application mobile pilotée par recherche

La page de catégorie affiche le nombre d'éléments dans une catégorie sélectionnée. Chaque élément figurant dans une catégorie peut généralement être représentée par certaines données élément pertinentes, telles que titre, une image et le prix. Ces données sont collectées à partir du catalogue de produits à l'aide d'une requête de recherche via le service REST de recherche SharePoint comme indiqué dans la Figure 2.

Figure 2. Page de catégorie pour une application mobile pilotée par recherche

Diagramme montrant l’application mobile communiquant avec une requête de recherche REST vers Share Point, ce qui renvoie les résultats de la recherche.

Si vous choisissez une des catégories dans le diagramme précédent, par exemple, TV, une page de catégorie apparaît.

Voici un exemple d'une requête de recherche REST classique pour obtenir le contenu d'une catégorie spécifique.


GET http://server/_api/search/query?querytext='owstaxidProductCatalogItemCategory:#0<TermGuid>'

Une réponse correspondante est affichée dans Exemple de réponse pour une requête REST de recherche pour une application mobile.

Le composant de traitement des requêtes dans SharePoint retourne des résultats de recherche qui contiennent des données pour une catégorie particulière, et l’application présente les données dans la page Catégorie . S'il existe un meilleur résultat associée à la catégorie sélectionnée, le composant de traitement des requêtes détecte cette association et extrait les données du meilleur résultat à partir de la base de données le meilleur résultat, intitulé BB dans le diagramme. Les résultats de la recherche sont ensuite mixte avec les résultats à partir de la base de données du meilleur résultat et renvoyés à l'application dans une table de résultats. L'application est responsable de l'extraction des différentes parties des résultats à partir de la table et affichant le meilleur résultat dans un emplacement dédié.

Pages de détails d'élément pour une application mobile pilotée par recherche

Si vous sélectionnez un élément dans une catégorie, la page de Détails de l'élément s'affiche. Dans cette page, un élément est décrite en détail avec des données telles que titre, des images de produit, description technique, prix et informations de remise. Des recommandations ou des évaluations, le cas échéant, sont également affichées. Pour construire la page de Détails de l'élément, l'application envoie deux requêtes : une requête pour récupérer des données d'élément et une autre requête pour recevoir les recommandations liées à cet élément, comme le montre la Figure 3.

Figure 3. Page de détails de l’élément pour une application mobile pilotée par la recherche

Créer des applications basées sur la recherche

Voici un exemple d'une requête de recherche REST classique pour obtenir le contenu d'un élément particulier.


GET http://server/_api/search/query?querytext='ProductCatalogItemNumberOWSTEXT:1234567'

Recommandations sont calculées dans SharePoint, pas dans l'application elle-même. Pour créer des recommandations basées sur les événements de l'utilisateur — pas uniquement dans cette application particulière, mais tous les événements de l'utilisateur qui sont collectées par le catalogue de produits — l'application envoie constamment des événements de l'utilisateur, lorsqu'elles se produisent, revenir au catalogue de produits dans SharePoint par le biais d'un appel de l'événement. Ces événements utilisateur sont stockés dans le journal des événements et traités uniquement comme d'autres événements de l'utilisateur associés à cet élément particulier. Aucun rappel n'est envoyée à l'application à partir du catalogue de produits. Les recommandations calculées sont disponibles pour l'application via le service REST de recherche de SharePoint.

L'exemple suivant montre un appel classique POST pour l'enregistrement des événements.

POST http://server/_api/events/logevent
{
      "usageEntry": {
            "__metadata": {
                  "type": "Microsoft.SharePoint.Administration.UsageEntry"
            },
            "EventTypeId": 1,
            "ItemId": "an item fb7c-4196-8123-e54eee5f4787",
            "ScopeId": "61141c0e-fb7c ",
            "Site": "61141c0e- 
-4196-8123-e54eee5f4787",
            "User": "johndoe"
      }
}

Le service suit les codes de retour HTTP standard : une réponse HTTP 200 indique une demande réussie. Il n'y a aucune réponse à partir du catalogue de produits pour l'interface REST de journalisation des événements.

Réponse d'exemple pour un reste de la Navigation des appels pour une application mobile


<?xml version="1.0" encoding="utf-8"?>
<d:MenuState xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns:georss="http://www.georss.org/georss" xmlns:gml="http://www.opengis.net/gml" m:type="SP.MenuState">

  <d:FriendlyUrlPrefix>/sites/contoso/</d:FriendlyUrlPrefix>
  <d:Nodes>
    <d:element m:type="SP.MenuNode">
      <d:CustomProperties m:null="true" />
      <d:FriendlyUrlSegment>electronics</d:FriendlyUrlSegment>
      <d:Hidden m:type="Edm.Boolean">false</d:Hidden>
      <d:Key>16c4c3c8-0309-47f7-9d9b-17e699febce8</d:Key>
      <d:Nodes>
        <d:element m:type="SP.MenuNode">
          <d:CustomProperties m:null="true" />
          <d:FriendlyUrlSegment>audio</d:FriendlyUrlSegment>
          <d:Hidden m:type="Edm.Boolean">false</d:Hidden>
          <d:Key>3e2d5c67-3fad-4cfa-8e1c-8c74fdf3a34b</d:Key>
          <d:Nodes>
            <d:element m:type="SP.MenuNode">
              <d:CustomProperties m:null="true" />
              <d:FriendlyUrlSegment>car-audio</d:FriendlyUrlSegment>
              <d:Hidden m:type="Edm.Boolean">false</d:Hidden>
              <d:Key>e3d271a4-dcbf-464d-a557-23848ccaa54f</d:Key>
              <d:Nodes />
              <d:NodeType m:type="Edm.Int32">1</d:NodeType>
              <d:SimpleUrl></d:SimpleUrl>
              <d:Title>Car audio</d:Title>
            </d:element>
            <d:element m:type="SP.MenuNode">
              <d:CustomProperties m:null="true" />
              <d:FriendlyUrlSegment>headphones</d:FriendlyUrlSegment>
              <d:Hidden m:type="Edm.Boolean">false</d:Hidden>
              <d:Key>7ad146d0-61b5-4b55-9da0-db7eaaa20f4a</d:Key>
              <d:Nodes />
              <d:NodeType m:type="Edm.Int32">1</d:NodeType>
              <d:SimpleUrl></d:SimpleUrl>
              <d:Title>Headphones</d:Title>
            </d:element>
            <d:element m:type="SP.MenuNode">
              <d:CustomProperties m:null="true" />
              <d:FriendlyUrlSegment>mp3</d:FriendlyUrlSegment>
              <d:Hidden m:type="Edm.Boolean">false</d:Hidden>
              <d:Key>7387fe97-52fa-464b-878a-b05d04e7032e</d:Key>
              <d:Nodes />
              <d:NodeType m:type="Edm.Int32">1</d:NodeType>
              <d:SimpleUrl></d:SimpleUrl>
              <d:Title>MP3</d:Title>
            </d:element>
            <d:element m:type="SP.MenuNode">
              <d:CustomProperties m:null="true" />
              <d:FriendlyUrlSegment>speakers</d:FriendlyUrlSegment>
              <d:Hidden m:type="Edm.Boolean">false</d:Hidden>
              <d:Key>65da907c-9565-45f6-a278-cbce7f74ab3d</d:Key>
              <d:Nodes />
              <d:NodeType m:type="Edm.Int32">1</d:NodeType>
              <d:SimpleUrl></d:SimpleUrl>
              <d:Title>Speakers</d:Title>
            </d:element>
          </d:Nodes>
          <d:NodeType m:type="Edm.Int32">1</d:NodeType>
          <d:SimpleUrl></d:SimpleUrl>
          <d:Title>Audio</d:Title>
        </d:element>
      </d:Nodes>
      <d:NodeType m:type="Edm.Int32">1</d:NodeType>
      <d:SimpleUrl></d:SimpleUrl>
      <d:Title>Electronics</d:Title>
    </d:element>
  </d:Nodes>
  <d:SimpleUrl m:null="true" />
  <d:SPSitePrefix>/sites/contoso/</d:SPSitePrefix>
  <d:SPWebPrefix>/sites/contoso/</d:SPWebPrefix>
  <d:StartingNodeKey>2168423f-3fea-4324-a5cb-90be8f079750</d:StartingNodeKey>
  <d:StartingNodeTitle>contoso</d:StartingNodeTitle>
  <d:Version>2012-05-29T12:00:04.4747484Z</d:Version>
</d:MenuState>

Réponse d'exemple pour une requête de recherche REST pour une application mobile


<d:query xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns:georss="http://www.georss.org/georss" xmlns:gml="http://www.opengis.net/gml" m:type="Microsoft.Office.Server.Search.REST.SearchResult">
  <d:ElapsedTime m:type="Edm.Int32">4640</d:ElapsedTime>
  <d:PrimaryQueryResult m:type="Microsoft.Office.Server.Search.REST.QueryResult">
    <d:CustomResults m:null="true"/>
    <d:QueryId>7fea4ced-5789-4067-beab-8f807410b29e</d:QueryId>
    <d:QueryRuleId m:type="Edm.Guid">00000000-0000-0000-0000-000000000000</d:QueryRuleId>
    <d:RefinementResults m:null="true"/>
    <d:RelevantResults m:type="Microsoft.Office.Server.Search.REST.RelevantResults">
      <d:GroupTemplateId m:null="true"/>
      <d:ItemTemplateId m:null="true"/>
      <d:Properties>
        ...
      </d:Properties>
      <d:ResultTitle m:null="true"/>
      <d:ResultTitleUrl m:null="true"/>
      <d:RowCount m:type="Edm.Int32">10</d:RowCount>
      <d:Table m:type="SP.SimpleDataTable">
        <d:Rows>
          ...
        </d:Rows>
      </d:Table>
      <d:TotalRows m:type="Edm.Int32">2048964</d:TotalRows>
      <d:TotalRowsIncludingDuplicates m:type="Edm.Int32">2048964</d:TotalRowsIncludingDuplicates>
    </d:RelevantResults>
    <d:SpecialTermResults m:null="true"/>
  </d:PrimaryQueryResult>
  <d:Properties>
    ...
  </d:Properties>
  <d:SecondaryQueryResults m:null="true"/>
  <d:SpellingSuggestion/>
  <d:TriggeredRules>
  </d:TriggeredRules>
</d:query>

Voir aussi