Kategoriarkiv: RESTEN

HTTP 406 Feil ved kantete $http.get mot SharePoint resten endepunkt

Oppdateringen: Marc AD ndersson påpekt denne store stykke informasjon: http://blogs.Office.com/2014/08/13/JSON-Light-support-rest-SharePoint-API-Released/. Det forklarer mye :).

Det kan være verste tittelen på et blogginnlegg noensinne! Anyhoo.

Jeg vanligvis gjør alle mine prototyping mot en O365-forekomst. Jeg har min personlige forekomst slik at jeg ikke trenger å være bekymret påvirker andre. Som en side-Husk når vi kaller båret rundt virtuelle maskiner på vår bærbare med MOSS-SQL Server, IIS, bestemme Hyper-V vs. VMWare? Anyhoo...

Jeg hadde utviklet en app med Angular i dette miljøet som gjør, blant annet, Dette:

$http.Get(serverUrl)
.suksess(funksjonen(data, status, overskrifter, config) {

var getLinksResponse = data;

getLinksResponse.value.forEach(funksjonen(theResult) {

// og så videre og så skum

Dette arbeidet rettferdig fin i to forskjellige SharePoint online miljøer. Men, Når min kollega portet den til en Cloudshare, Han fikk en HTTP 406 feil (som var første gang jeg noen gang fikk den, så... yay, jeg tror det). Vi gjorde litt research og la merke til at overskriften "Godta" var av. SharePoint online var helt fornøyd med:

Godta: programmet/json

Men cloudshare forekomsten (SP er på prem, vert for en virtuell server) ville klassiske "odata = utførlig" lagt i tillegg:

Godta: programmet/json;OData = detaljert

Å fastsette det, vi lagt til overskriften slik:

var config = {overskrifter: {
'Akseptere': "program/json;OData = utførlig '
}
};

$http.Get(serverUrl,config)
.suksess(funksjonen(data, status, overskrifter, config) {

var getLinksResponse = data;

getLinksResponse.value.forEach(funksjonen(theResult) {

// og så videre og så skum

Som ble kvitt den 406, men det også endret formatet på svaret. Det var mer... detaljert. (haha!) Flere endringer er nødvendig og her er resultatet:

var config = {overskrifter: {
'Akseptere': "program/json;OData = utførlig '
}
};

$http.Get(serverUrl,config)
.suksess(funksjonen(data, status, overskrifter, config) {

var getLinksResponse = data;

getLinksResponse.d.results.forEach(funksjonen(theResult) {

// og så videre og så skum

Dette bare omgjort til en 30 minutt problem for oss, så vi lucked ut. Forhåpentligvis finner noen dette nyttig.

</slutten>

Slik angir du folk som et søkeomfang / Innholdskilde SharePoint 2013 REST API

Jeg hadde grunn til å arbeide med SharePoint 2013 Søke-API via resten for første gang. Jeg ønsket å søke etter personer, ikke dokumenter. Nøkkelen læring her er at angir du innholdskilder via sin GUID (eller minst i dette tilfellet). Følgende jQuery kodebiten viser hvordan:

    loadExpertsAsync: funksjonen() {

        jQuery.support.cors = sann;

        $.Ajax({
            URL-adresse: Dette.CreateFullApiUrl() +
                "?querytext = "portaler"&sourceid = "b09a7990-05ea-4af9-81ef-edfab16c4e31"" +
                "&selectproperties ='LinkedInProfileUrl,GoogleCirclesProfileUrl,BALargeProfilePictureUrls,BAGridPictures,WorkEmail,Ferdigheter,AboutMe,Interesser,JobTitle,PastProjects,PictureURL,PreferredName,TwitterHandle,LinkedInProfileUrl,PreferredName,GoogleCirclesProfileUrl'" +
                "&ROWLIMIT = 99",
            metoden: "FÅ",
            overskrifter: { "Godta": "programmet/json; OData = detaljert" },
            cache: USANN,
            suksess: funksjonen (resultatet) {

I mitt tilfelle, Jeg kjører API mot SharePoint online. Få guiden, Jeg fulgte fremgangsmåten:

  1. Tilgang til Administrasjonssenter for SharePoint
  2. Velg "Søk" fra venstre side
  3. Velg «Behandle resultatet kilder»
  4. Velg "Lokalbefolkningen resultater"
  5. Se på nettadressen.

Webadressen min sett noe som:

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

Parameteren sourceid er hva arbeidet for meg.

(Jeg forstår at kilde-IDen kan faktisk være en slags permanent ting med SP, but I’ll always check anyway 🙂 ).

</slutten>

undefinedAbonner på bloggen min.

Følg meg på Twitter på http://www.twitter.com/pagalvin

Eksempel SharePoint resten samtaler

Her er et sett eksempel resten anrop som fungerer for meg og kan hjelpe deg også. Som av 02/2014, there are two examples 🙂

  1. Referere til en kolonne med mellomrom i navn
  2. Referere til en multi-velger kolonne
  3. Utføre et personsøk via resten

 

Jeg vil legge til dette som tiden går.

Her er noen nyttige blekkfarger jeg har funnet også:

Referere til en kolonne med mellomrom i navn

Jeg opprette en egendefinert liste med en kolonne kalt "Blogg forfatter" (mellomrom mellom bloggen og forfatter).

$select referanse kolonnen er:

image

Bare erstatte plassen med "_x0020_". Vi ser _x0020_ i mange eksempler på internets og resten er ikke annerledes.

Hvis du ikke gjør det, du er ansvarlig for å få en feilmelding som dette:

Uttrykket “Bloggforfatteren” er ikke gyldig.

Lett nok.

Referere til en multi-velger oppslagskolonne

Definere:

  1. Opprette en egendefinert liste navnet kategorier.
  2. Legg til noen kategorier. Jeg lagt kategorier thusly:image
  3. Opprette en egendefinert liste kalt MockBlog og legge til kategorier som en flervalgsliste kolonne (eller områdekolonne hvis det er hvordan du ruller).

Legge til noen elementer i listen Mockblog og du er klar.

En Ajax stil anrop ved hjelp jQuery vil se omtrent slik ut:

serverUrl  = (likhetstegn) "/_api/web/lister/GetByTitle('MockBlog')/elementer" +
             "?$Velg = tittel,Kategorier/tittel,Blog_x0020_Author/tittel" + 
             "&$utvide = Blog_x0020_Author,Kategorier";

Vi forteller SharePoint "gi meg tittelen for alle kategorier (Kategorier/tittel). Få de faktiske verdiene for Tittel ved $utvideing kategorilisten." (Min avslappende parafraser er trolig ganske løs, men dette hvordan jeg tolke det).

Hvis du gjør dette via JavaScript og bruker Fiddler for å se på utdataene, du får noe som dette tilbake:

 

image

(Ovenfor er en JSON objekt)

Utføre et personsøk via resten

Jeg blogged om dette separat. Nøkkelen er å angi en sourceid parameter som er guiden for lokalbefolkningen innholdskilden. (Innholdskilder som kalles omfang og det er min-oh-min så hardt å ikke kalle alt et område for meg!).

Les mer om det her: http://www.mstechblogs.com/paul/?p=10385

 

</slutten>

undefinedAbonner på bloggen min.

Følg meg på Twitter på http://www.twitter.com/pagalvin

Rask og enkel: Opprette et SharePoint-område ved hjelp av REST

Det er mange ressurser rundt som viser hvordan du gjør dette, men jeg kunne ikke finne en omfattende gå-til-kobling, så her er vi.

Du kan opprette et SharePoint-område ved hjelp av REST-API.  Her er et fullt bakt eksempel:

<!--
    SiteRequestForm.html: Samle informasjon og lage et nettsted for brukeren.
-->

<Center>
<tabell>
    <tr>
        <TD>Områdenavn:</TD>
        <TD><inngang type= "tekst" navn= "Områdenavn" ID= "Områdenavn" /></TD>
    </tr>
    <tr>
        <TD ColSpan= "2">
            <inngang type= "Send" ID= "CreateSiteButton" verdi= "Opprette webområdet" />
        </TD>
    </tr>
</tabell>
</Center>

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

<skriptet>
var CreateSiteLogicContainer = {

    createSiteData: {
            "parametere": {
                __metadata: { "type": "SP.WebInfoCreationInformation" },
                URL-adresse: "Paultest1",
                Tittel: "Paultest1",
                Beskrivelse: "resten opprettet web Paul!",
                Språk: 1033,
                WebTemplate: "m",
                UseUniquePermissions: USANN
            }
    },

    createSite: funksjonen () {

        jQuery.support.cors = sann;

        CreateSiteLogicContainer.createSiteData.parameters.Url = $("#SiteName").Val();
        
        $.Ajax({
            URL-adresse: "https://bigapplesharepoint.sharepoint.com/NBAIADev/_api/web/webinfos/add",
            metoden: "POST",

            overskrifter: {
                "Godta": "program/json; OData = detaljert",
                "content-type": "program/json;OData = detaljert",
                «X-RequestDigest": $("#__REQUESTDIGEST").Val()
            },

            data: JSON.stringify(CreateSiteLogicContainer.createSiteData),

            suksess: funksjonen () { varsel("suksess"); },
            feil: funksjonen () { varsel("feil"); }

        });
    },

    wireUpForm: funksjonen () {
        $("#CreateSiteButton").Klikk(funksjonen () {
            varsel("Om å prøve og opprette området.");
            CreateSiteLogicContainer.createSite();
        });
    }


}

CreateSiteLogicContainer.wireUpForm();

</skriptet>

Når vellykket, du får en JSON pakke svar som dette:

image

Min nøkkel tanker og erfaringene fra dette inkluderer:

  • Denne fremgangsmåten bruker jQuery.  I mitt tilfelle, biblioteket jQuery ligger i ".../ plugins. "  Vil du endre å din favoritt JQ plasseringen.
  • Du kan kopiere og lime inn at hele kodebiten i en webdel for innholdsredigering på en side og det skal fungere helt fint.  Du vil endre endepunktet for API-kallet og sørge for at du refererer JQ riktig.
  • URL-adressen er knyttet til din API endepunkt.  I mitt tilfelle, det skaper sekundære områder under https://bigapplesharepoint.com
  • Du trenger ikke å gi en content-Lenght. Noen blogginnlegg og MSDN dokumentet innebærer at du gjør, men skjedde for meg automatisk, som jeg antar er håndteres av $.ajax samtalen selv.
  • Denne linjen er nødvendig for å unngå en "forbudt" svar: «X-RequestDigest": $("#__REQUESTDIGEST").Val().  Det finnes andre måter å gjøre det., men dette er ganske fin.  Jeg har mistet koblingen til bloggen som denne snarveien.  H/T deg, mystisk blogger!

Lykke til og håper dette hjelper noen.

</slutten>

undefinedAbonner på bloggen min.

Følg meg på Twitter på http://www.twitter.com/pagalvin

Rask og enkel: SharePoint resten kaller bare returnerer 100 Poster

Jeg har jobbet på et offentlig mot webområde for min SharePoint praksis her i New York og den bruker mye JavaScript og resten kaller for å vise innhold.

Under hovedlinjen utvikling, Jeg lage en liten datasett med bare 10 eller så rader i en liste og min resten oppfordrer alle dro derfra.  Når jeg bumped opp listen har noen få hundre rader for å teste for forventet vekst, Jeg fant at jeg får nøyaktig 100 rader som returneres tilbake på mine resten samtaler.

Dette er en veldig enkel ting til adressen.  I mitt tilfelle (og jeg tror i de fleste tilfeller), standard resten samtaler til SharePoint (og muligens en industristandard?) avkastning 100 rader.  Å returnere mer enn standard, Bruk parameteren $top på ringer, som i:

FÅ /Insights Dev/_api/web/lists/GetByTitle('MockBlog')/elementer?$Velg ID,Tittel,Kategorier/tittel,Blog_x0020_Author/tittel,DatePublished,BlogSummary&$utvide = Blog_x0020_Author,Kategorier&$filteret =&$topp = 9999

Jeg plukket 9999 i dette tilfellet siden jeg vet at growth-wise, det vil ikke være mer enn 200 eller så rader lagt til denne listen i ett år.  Hvis det blir ungainly, Vi kan implementere noen paginerer nedover veien.

</slutten>

undefinedAbonner på bloggen min.

Følg meg på Twitter på http://www.twitter.com/pagalvin