Arxius de la categoria: RESTA

HTTP 406 Error quan s'utilitza $http.get Angular contra SharePoint resta punts finals

Actualització: Marc d'anunci ndersson assenyalar aquesta gran peça d'informació: http://Blogs.Office.com/2014/08/13/JSON-Light-support-Rest-SharePoint-API-Released/. Que explica molt :).

Que pot ser el pitjor títol d'una entrada de blog mai! Anyhoo.

Solen fer tota la meva prototipatge contra una instància de O365. Tinc el meu exemple personal per tal que no ha de preocupar per afectar a ningú més. Com acotació al marge – recordeu quan anomenem realitzades al voltant de màquines virtuals en nostres portàtils amb molsa-SQL Server, L'IIS, decidir Hyper-V contra. VMWare? Anyhoo...

Jo havia desenvolupat una aplicació utilitzant Angular en aquest entorn que fa, entre altres coses, això:

$http.Get(URLServidor)
.èxit(funció(dades, l'estat, capçaleres, config) {

var getLinksResponse = dades;

getLinksResponse.value.forEach(funció(theResult) {

// i així successivament i així escuma

Això estava treballant just bé en dos diferents SharePoint entorns en línia. No obstant això, Quan el meu col lega portat-lo a una instància de Cloudshare, ell estava aconseguint un HTTP 406 error (que era la primera vegada que mai arribava aquell, Així que... yay, Suposo que). Vam fer una mica de recerca i s'adonava que l'encapçalament "Accepta" era fora. Era molt feliç amb SharePoint en línia:

Acceptar: aplicació/json

Però l'exemple cloudshare (que és SP en prem, allotjat en un servidor virtual) volia el clàssic "odata = verbosa" afegit en, així:

Acceptar: aplicació/json;OData = depuraci ≤

D'arreglar allò, Hem afegit la capçalera com a tal:

var config = {capçaleres: {
"Accepta": ' aplicació/json;OData = depuraci ≤ "
}
};

$http.Get(URLServidor,config)
.èxit(funció(dades, l'estat, capçaleres, config) {

var getLinksResponse = dades;

getLinksResponse.value.forEach(funció(theResult) {

// i així successivament i així escuma

Que es va desfer de la 406, però també va canviar el format de la resposta. Es tractava més aviat... detallat. (Haha!) Calien canvis més i aquí està el resultat final:

var config = {capçaleres: {
"Accepta": ' aplicació/json;OData = depuraci ≤ "
}
};

$http.Get(URLServidor,config)
.èxit(funció(dades, l'estat, capçaleres, config) {

var getLinksResponse = dades;

getLinksResponse.d.Results.forEach(funció(theResult) {

// i així successivament i així escuma

Això només es va convertir en un 30 minut problema per a nosaltres, així ens va tenir sort a. Esperançadorament algú es troba aquesta útil.

</final>

Com especificar la gent com un àmbit de cerca / Origen de contingut utilitzant SharePoint 2013 RESTA API

Jo tenia raons per treballar amb el SharePoint 2013 L'API de cerca mitjançant resta per primera vegada. Volia Cercar persones, documents de no. La clau aquí és que l'aprenentatge que especifiqueu els orígens de contingut mitjançant la seva GUID (o almenys en aquest cas). El jQuery següent fragment Mostra com:

    loadExpertsAsync: funció() {

        jQuery.support.cors = True;

        $.Ajax({
            URL: això.CreateFullApiUrl() +
                "?querytext = "portals"&SourceId = 'b09a7990-05ea-4af9-81ef-edfab16c4e31'" +
                "&selectproperties = "LinkedInProfileUrl,GoogleCirclesProfileUrl,BALargeProfilePictureUrls,BAGridPictures,WorkEmail,Habilitats,AboutMe,Interessos,JobTitle,PastProjects,PictureURL,PreferredName,TwitterHandle,LinkedInProfileUrl,PreferredName,GoogleCirclesProfileUrl'" +
                "&RowLimit = 99",
            mètode: "ACONSEGUIR",
            capçaleres: { "Acceptar": "aplicació/json; OData = depuraci ≤" },
            memòria cau: fals,
            èxit: funció (resultat) {

En el meu cas, Estic corrent l'API contra SharePoint en línia. Per obtenir el GUID, He seguit aquests passos:

  1. Accés al centre d'administració del SharePoint
  2. Seleccioneu "Cerca" de la mà esquerra navegació
  3. Seleccioneu "Administra resultat fonts"
  4. Seleccioneu "Gent Local resultats"
  5. Mira l'URL.

El meu URL semblava una cosa així com:

https://xyzzy-admin.sharepoint.com/_layouts/15/searchadmin/EditResultSource.aspx?level=tenant&sourceid=b09a7990%2D05ea%2D4af9%2D81ef%2Dedfab16c4e31&view=1

El paràmetre sourceid és què funcionava per mi.

(Entenc que sourceid en realitat pot ser una mena de cosa permanent amb SP, però sempre comprovaré igualment 🙂 ).

</final>

undefinedSubscriure's al meu blog.

Follow me on Twitter http://www.twitter.com/pagalvin

Exemple del SharePoint resta trucades

Aquí és un conjunt de convocatòries de resta Mostra que funciona per mi i pot ajudar-lo, així. Com de 02/2014, hi ha dos exemples 🙂

  1. Referència a una columna amb espais en el seu nom
  2. Referència a una columna selecció múltiple
  3. Realitzar una recerca de persones mitjançant la resta

 

Vaig a afegir a aquesta mesura que passa el temps.

Aquí hi ha algunes tintes útils que he trobat, així:

Referència a una columna amb espais en el seu nom

Puc crear una llista personalitzada amb una columna anomenada "Autor del Blog" (espai entre bloc i autor).

És el $select per fer referència a la columna:

image

Simplement reemplaci l'espai amb "_x0020_". Veiem el _x0020_ en molts exemples a través de l'internets i resta és diferent.

Si no fa que, vostè està obligat a aconseguir un missatge d'error com aquest:

L'expressió “Autor del blog” no és vàlid.

Prou fàcil.

Referència a una columna de cerca selecció múltiple

Configurar:

  1. Crear una llista personalitzada anomenat Categories.
  2. Afegir algunes categories. He afegit categories així:image
  3. Crear un altre costum llista anomenada MockBlog i afegir Categories com una columna de llista de selecció múltiple (o columna del lloc si allò és com vostè rotllo).

Afegir alguns elements a la llista de Mockblog i ja està llest.

Una crida d'estil Ajax mitjançant jQuery mirarà alguna cosa com això:

  = URLServidor "/_api/web/llistes/GetByTitle('MockBlog')/elements" +
             "?$Seleccioneu = títol,Categories/títol,Blog_x0020_Author/títol" + 
             "&$ampliar = Blog_x0020_Author,Categories";

Li estem dient SharePoint "dóna'm el títol de totes les Categories (Categories/títol). Obtenir els valors reals per a Títol per $ampliarció la llista de Categories." (El meu descans parafrasejant és probablement bastant fluixa, però això com estic interpretant-).

Si vostè està fent això mitjançant JavaScript i utilitzant el violinista per mirar la sortida, vostè aconseguir alguna cosa com això a canvi:

 

image

(L'anterior és un objecte JSON)

Realitzar una recerca de persones mitjançant la resta

He blogged sobre això per separat. La clau és especificar un paràmetre sourceid el valor és el GUID de l'origen de contingut gent Local. (Els orígens de contingut solia anomenar àmbits i és meva-Ah-meu tan difícil no cridar tot un àmbit per a mi!).

Llegiu més sobre això aquí: http://www.mstechblogs.com/paul/?p=10385

 

</final>

undefinedSubscriure's al meu blog.

Follow me on Twitter http://www.twitter.com/pagalvin

Ràpid i fàcil: Crear un lloc del SharePoint utilitzant la resta

Hi ha un munt de recursos al voltant d'aquest espectacle com fer això, però no podria trobar un enllaç complet anar a, Així que aquí estem.

Vostè pot crear un lloc del SharePoint utilitzant l'API de resta.  Heus aquí un exemple plenament al forn:

<!--
    SiteRequestForm.html: Recollir informació i crear un lloc per a l'usuari.
-->

<Centre>
<taula>
    <tr>
        <TD>Nom del lloc:</TD>
        <TD><entrada tipus= "text" nom= "SiteName" ID= "SiteName" /></TD>
    </tr>
    <tr>
        <TD colspan= 2">
            <entrada tipus= "enviar" ID= «CreateSiteButton" valor= "Crear un portal" />
        </TD>
    </tr>
</taula>
</Centre>

<script src="../Plugins/jQuery-1.11.0.min.js"></script>

<script>
var CreateSiteLogicContainer = {

    createSiteData: {
            "paràmetres": {
                __metadata: { tipus"": "SP.WebInfoCreationInformation" },
                URL: "Paultest1",
                Títol: "Paultest1",
                Descripció: "resta creació web per Paul!",
                Llengua: 1033,
                WebTemplate: "sts",
                UseUniquePermissions: fals
            }
    },

    createSite: funció () {

        jQuery.support.cors = True;

        CreateSiteLogicContainer.createSiteData.parameters.Url = $("#SiteName").val();
        
        $.Ajax({
            URL: "https://bigapplesharepoint.sharepoint.com/NBAIADev/_api/web/webinfos/add",
            mètode: CORREU"",

            capçaleres: {
                "accepta": "application/json; OData = depuraci ≤",
                "content-type": "application/json;OData = depuraci ≤",
                "X-RequestDigest": $("#__REQUESTDIGEST").val()
            },

            dades: JSON.stringify(CreateSiteLogicContainer.createSiteData),

            èxit: funció () { alerta("l'èxit"); },
            error: funció () { alerta("error"); }

        });
    },

    wireUpForm: funció () {
        $("#CreateSiteButton").feu clic a(funció () {
            alerta("Punt de provar i crear el lloc.");
            CreateSiteLogicContainer.createSite();
        });
    }


}

CreateSiteLogicContainer.wireUpForm();

</script>

Quan l'èxit, s'obté un paquet JSON en resposta com aquesta:

image

Meves idees claus i aprenentatges d'aquest inclouen:

  • Aquest enfocament utilitza jQuery.  En el meu cas, la meva llibreria jQuery està situat a ".../ plugins. "  Voldrà canviar això perquè apunti a la seva localització favorita JQ.
  • Podeu copiar i enganxar aquest fragment tot a Editor continguts Part Web en una pàgina i hauria de funcionar just bé.  Voldrà canviar el punt final de la crida d'API i assegureu-vos que referència JQ correctament.
  • La URL és relativa a l'extrem del seu API.  En el meu cas, està creant subllocs sota https://bigapplesharepoint.com
  • No cal que facilitis una llargada de contingut. Alguns correus de blog i MSDN document implica que fas, però va passar per a mi automàticament, que assumeixo està sent manejada per la crida de .ajax $ propi.
  • Aquesta línia és necessària per evitar una resposta "prohibida": "X-RequestDigest": $("#__REQUESTDIGEST").val().  Hi ha altres maneres de fer-ho, però això és força bonic.  He perdut l'enllaç al bloc que proporciona aquesta drecera.  / H T li, blogger misteriós!

Bona sort i espero que això ajudi a algú.

</final>

undefinedSubscriure's al meu blog.

Follow me on Twitter http://www.twitter.com/pagalvin

Ràpid i senzill: RESTA del SharePoint crida únics devolucions 100 Registres

He estat treballant en una web pública davant de la meva pràctica de SharePoint aquí en Nova York i que utilitza una gran quantitat de trucades JavaScript i resta per mostrar contingut.

Durant el desenvolupament i, Puc crear un petit conjunt de dades amb només 10 o tan estirats files en una llista personalitzada i meves trucades resta totes des d'allà.  Un cop em vaig trobar amb la llista de tenir uns cent files de dades a prova per al creixement esperat, Em va semblar que estava aconseguint exactament 100 files tornar enrere damunt les meves trucades resta.

Això és una cosa molt simple d'adreça.  En el meu cas (i crec que en la majoria dels casos), l'omissió resta trucades a SharePoint (i possiblement com un estàndard de la indústria?) retorn 100 files.  Per tornar més que l'omissió, Utilitzeu el paràmetre $top la seva trucada, com a:

OBTENIR /Insights Dev/_api/web/lists/GetByTitle('MockBlog')/elements?$Seleccioneu = ID,Títol,Categories/títol,Blog_x0020_Author/títol,DatePublished,BlogSummary&$ampliar = Blog_x0020_Author,Categories&$filtre =&$part superior = 9999

Triava 9999 en aquest cas ja que sé que growth-wise, no hi haurà més de 200 o tan files afegides a aquesta llista en un any.  Si es converteix en endintre, podem implementar alguna paginació en el camí.

</final>

undefinedSubscriure's al meu blog.

Follow me on Twitter http://www.twitter.com/pagalvin