Archifau Categori: GWEDDILL

HTTP 406 Gwall Pryd Yn Arfer onglog $ http.get Yn erbyn Pwyntiau SharePoint REST End

Diweddariad: Nododd hwn darn mawr o wybodaeth am marc AD ndersson: http://blogs.office.com/2014/08/13/json-Light-support-Rest-SharePoint-API-released/. Mae hynny'n egluro llawer :).

Efallai fod y teitl swydd blog gwaethaf erioed! Anyhoo.

Fel arfer y gwnaf bopeth o fy prototeipio erbyn enghraifft O365. Mae gennyf fy achos personol fel bod ddim yn gorfod poeni am unrhyw un arall sy'n effeithio ar. Wrth fynd heibio – cofio pan alwn Cynhaliwyd o amgylch rhith peiriannau ar ein gliniaduron gyda MWSOGL – gweinydd SQL, IIS, benderfynu vs Hyper-V. VMWare? Anyhoo...

Wedi datblygu ap ddefnyddio Angular yn yr amgylchedd hwn yw, ymhlith pethau eraill, hwn:

$http.get(serverUrl)
.llwyddiant(swyddogaeth(data, statws, Penynnau, Ffurfweddu) {

var getLinksResponse = data;

getLinksResponse.value.forEach(swyddogaeth(theResult) {

// ac ati a bytheirio felly

Roedd hyn yn gweithio ychydig iawn mewn dau wahanol SharePoint amgylcheddau ar-lein. Fodd bynnag,, pan oedd fy nghyd-Aelod yn ei ported i Cloudshare yr achos, ei fod yn cael HTTP 406 gwall (a oedd y tro cyntaf a gefais erioed mai un, felly... yay, am wn i). Oedd ychydig o ymchwil ac yn sylwi bod y pennawd "Derbyn" oddi ar. SharePoint ar-lein yn berffaith hapus gyda'r:

Derbyn: cais/json

Ond y lle cloudshare (sydd yn cefnogi pobl ar prem, gynhaliwyd yn weinydd rhithwir) am y clasurol "odata = amleiriog" ychwanegodd yn ogystal:

Derbyn: cais/json;odata = amleiriog

I ddatrys hynny, Ychwanegwyd y pennawd fel y cyfryw:

Ffurfweddu var = {Penynnau: {
'Derbyn': ' cais/json;odata = amleiriog '
}
};

$http.get(serverUrl,Ffurfweddu)
.llwyddiant(swyddogaeth(data, statws, Penynnau, Ffurfweddu) {

var getLinksResponse = data;

getLinksResponse.value.forEach(swyddogaeth(theResult) {

// ac ati a bytheirio felly

Bod cael gwared ar y 406, ond roedd hefyd wedi newid y fformat yr ymateb. Yr oedd mwy... amleiriog. (haha!) Yr oedd angen mwy o newidiadau ac yma yn y canlyniad terfynol:

Ffurfweddu var = {Penynnau: {
'Derbyn': ' cais/json;odata = amleiriog '
}
};

$http.get(serverUrl,Ffurfweddu)
.llwyddiant(swyddogaeth(data, statws, Penynnau, Ffurfweddu) {

var getLinksResponse = data;

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

// ac ati a bytheirio felly

Trodd hyn dim ond i 30 broblem funud i ni, Felly yr ydym yn lucked. Gobeithio rhywun canfod hyn yn ddefnyddiol.

</diwedd>

Sut i Nodwch Pobl fel Cwmpas Chwilio / Cynnwys Ffynhonnell Defnyddio SharePoint 2013 REST API

Cefais reswm i weithio gyda y SharePoint 2013 API chwilio drwy weddill am y tro cyntaf. Yr oeddwn yn chwilio am bobl, Nid dogfennau. Allweddol dysgu yma yw Nodwch ffynonellau cynnwys drwy ei GUID (neu o leiaf yn yr achos hwn). Y sioeau beintiwyd jQuery canlynol sut:

    loadExpertsAsync: swyddogaeth() {

        jQuery.support.cors = wir;

        $.AJAX({
            url: hwn.CreateFullApiUrl() +
                "?querytext = 'pyrth'&sourceid = 'b09a7990-05ea-4af9-81ef-edfab16c4e31'" +
                "&selectproperties ='LinkedInProfileUrl,GoogleCirclesProfileUrl,BALargeProfilePictureUrls,BAGridPictures,WorkEmail,Sgiliau,AboutMe,Buddiannau,Teitl y swydd,PastProjects,PictureURL,PreferredName,TwitterHandle,LinkedInProfileUrl,PreferredName,GoogleCirclesProfileUrl'" +
                "&rowlimit = 99",
            dull: "GAEL",
            Penynnau: { "Derbyn": "cais/json; odata = amleiriog" },
            storfa: ffug,
            llwyddiant: swyddogaeth (arwain) {

Yn fy achos, Yr wyf yn rhedeg y API erbyn SharePoint ar-lein. I gael y GUID, Dilynais y camau hyn:

  1. Mynediad i'r ganolfan gweinyddol SharePoint
  2. Dewiswch "chwilio" o'r mordwyo chwith
  3. Dewiswch "Canlyniad ffynonellau reoli'r"
  4. Dewiswch "Canlyniadau pobl leol"
  5. Edrychwch ar yr URL.

Fy URL edrych rhywbeth fel:

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

Paramedr sourceid yw hyn wedi gweithio i mi.

(Deallaf y gall y sourceid mewn gwirionedd yn rhyw fath o peth parhaol gyda SP, ond byddaf bob amser yn gwirio beth bynnag 🙂 ).

</diwedd>

undefinedTanysgrifio i fy mlog.

Dilynwch fi ar Twitter yn http://www.twitter.com/pagalvin

Galwadau Enghraifft SharePoint REST

Dyma set sampl galwadau gweddill y gwaith i mi a allai eich helpu yn ogystal. Fel y 02/2014, ceir dwy enghraifft 🙂

  1. Cyfeirnod Colofn gyda mannau yn ei enw
  2. Cyfeiriad Colofn aml-ddewis
  3. Yn cynnal chwiliad pobl drwy weddill

 

Byddwn yn ychwanegu at hyn wrth i amser fynd heibio.

Dyma rhai inciau defnyddiol a Rydw i wedi cael cystal:

Cyfeirnod Colofn gyda mannau yn ei enw

Rwyf yn creu rhestr bersonol gyda Colofn "Blog awdur" a enwir (gofod rhwng Blog ac awdur).

Yn y $select cyfeirio at y golofn honno:

image

Disodli y gofod â "_x0020_". Gwelwn y _x0020_ mewn llawer o enghreifftiau ar draws y internets a'r gweddill yn wahanol.

Os nad ydych yn gwneud hynny, ydych chi'n atebol yn derbyn neges camgymeriad fel hyn:

Y mynegiant “Awdur blog” ddim yn ddilys.

Ddigon hawdd.

Cyfeirio at daflenni aml-ddewis

Sefydlu:

  1. Creu rhestr bersonol categorïau a enwyd.
  2. Ychwanegu rhai categorïau. Ychwanegais categorïau thusly:image
  3. Creu rhestr bersonol arall o'r enw MockBlog ac ychwanegu categorïau fel colofn rhestr aml-ddewis (neu safle Colofn os mai dyna sut y mae eich cyflwyno).

Ychwanegu eitemau at eich rhestr Mockblog a fyddwch yn barod.

Bydd galwad arddull Ajax yn defnyddio jQuery edrych rhywbeth fel hyn:

serverUrl  = "/_api/we/rhestrau/GetByTitle('MockBlog')/eitemau" +
             "?$Dewiswch = teitl,Categorïau/teitl,Blog_x0020_Author/teitl" + 
             "&$ehangu = Blog_x0020_Author,Categorïau";

Rydych yn dweud SharePoint "roi imi y teitl ar gyfer pob categori (Categorïau/teitl). Cael y gwerthoedd gwirioneddol ar gyfer Teitl gan $ehanguing y rhestr categorïau." (Fy aralleirio tawel yn debyg eithaf llac, ond sut yr wyf yn dehongli'r ei).

Os ydych yn gwneud hyn drwy JavaScript a defnyddio Fiddler i edrych ar yr allbwn, y cewch rywbeth fel hyn yn ôl:

 

image

(Yr uchod yw gwrthrych JSON)

Yn cynnal chwiliad pobl drwy weddill

Rwy'n blogio ynghylch hyn ar wahân. Yr allwedd yw Nodwch paramedr sourceid eu gwerth yn y GUID y ffynhonnell cynnwys pobl leol. (Ffynonellau cynnwys arfer cael eu galw'n chwmpas ac mae'n fy-o-fy nid mor galed i alw popeth cwmpas i mi!).

Darllenwch fwy am y peth yma: http://www.mstechblogs.com/paul/?p=10385

 

</diwedd>

undefinedTanysgrifio i fy mlog.

Dilynwch fi ar Twitter yn http://www.twitter.com/pagalvin

Cyflym a hawdd: Creu Safle SharePoint Defnyddio REST

Ceir llawer o adnoddau o gwmpas sy'n dangos sut i wneud hyn, ond ni allai ddod o hyd i ddolen cynhwysfawr i, Felly dyma ni.

Gallwch greu safle SharePoint gan ddefnyddio API gweddill.  Dyma enghraifft llawn wedi'i bobi:

<!--
    SiteRequestForm.html: Casglu gwybodaeth ac yn creu safle ar gyfer y defnyddiwr.
-->

<canolfan>
<tabl>
    <tr>
        <TD>Enw'r safle:</TD>
        <TD><mewnbwn Math= "testun" Enw= "SiteName" id= "SiteName" /></TD>
    </tr>
    <tr>
        <TD colspan= "2">
            <mewnbwn Math= "gyflwyno" id"CreateSiteButton =" gwerth= "Creu safle" />
        </TD>
    </tr>
</tabl>
</canolfan>

<sgript src=".. /Plugins/jquery-1.11.0.min.JS"></sgript>

<sgript>
Roedd CreateSiteLogicContainer = {

    createSiteData: {
            "paramedrau": {
                __metadata: { "math": "SP. WebInfoCreationInformation" },
                Url: "Paultest1",
                Teitl: "Paultest1",
                Disgrifiad: "creu weddill we gan Paul!",
                Iaith: 1033,
                WebTemplate: "sts",
                UseUniquePermissions: ffug
            }
    },

    createSite: swyddogaeth () {

        jQuery.support.cors = wir;

        CreateSiteLogicContainer.createSiteData.parameters.Url = $("#SiteName").val();
        
        $.AJAX({
            url: "https://bigapplesharepoint.sharepoint.com/NBAIADev/_api/web/webinfos/add",
            dull: "SWYDD",

            Penynnau: {
                "Derbyn": "cais/json; odata = amleiriog",
                "cynnwys math": "cais/json;odata = amleiriog",
                "X-RequestDigest": $("#__REQUESTDIGEST").val()
            },

            data: JSON.stringify(CreateSiteLogicContainer.createSiteData),

            llwyddiant: swyddogaeth () { rhybuddio("llwyddiant"); },
            gwall: swyddogaeth () { rhybuddio("gwall"); }

        });
    },

    wireUpForm: swyddogaeth () {
        $("#CreateSiteButton").cliciwch(swyddogaeth () {
            rhybuddio("Am i geisio creu safle.");
            CreateSiteLogicContainer.createSite();
        });
    }


}

CreateSiteLogicContainer.wireUpForm();

</sgript>

Pan llwyddiannus, Rydych yn derbyn pecyn JSON yn ymateb fel hyn:

image

Fy meddyliau allweddol a'r gwersi a ddysgwyd o hyn yn cynnwys:

  • Mae'r dull hwn yn defnyddio jQuery.  Yn fy achos, Lleolir fy llyfrgell jQuery yn "… / ategion. "  Byddwch chi eisiau newid hynny i dynnu sylw at eich lleoliad JQ hoff.
  • Gall eich copïo a gludo beintiwyd cyfan hwnnw yn rhan we Golygydd cynnwys ar dudalen a dylai weithio ychydig iawn.  Byddwch chi eisiau newid pwynt gorffen galwad API a gwnewch yn siŵr eich bod yn cyfeirio at JQ gywir.
  • Mae'r URL yn o'i gymharu â gwaelodlin eich API.  Yn fy achos, Mae'n creu is-safleoedd oddi tano https://bigapplesharepoint.com
  • Nid oes angen i chi ddarparu cynnwys-darn. Rhai swyddi blog a MSDN Mae'r ddogfen yn awgrymu eich bod yn gwneud, ond a ddigwyddodd i mi awtomatig, Yr wyf yn cymryd yn cael ei drin gan yr alwad.ajax $ ei hun.
  • Mae y llinell hon yn ofynnol er mwyn osgoi ymateb "gwaharddedig": "X-RequestDigest": $("#__REQUESTDIGEST").val().  Mae yna ffyrdd eraill i wneud hynny, ond mae hyn yn eithaf braf.  Yr wyf wedi colli cysylltiad i blog a ddarperir y llwybr byr hwn.  H/T i chi, rhyfedd blogger!

Lwc dda a gobeithiaf y bydd hyn yn helpu rhywun allan.

</diwedd>

undefinedTanysgrifio i fy mlog.

Dilynwch fi ar Twitter yn http://www.twitter.com/pagalvin

Cyflym a syml: SharePoint REST Call Dim ond Ffurflenni 100 Cofnodion

Dwi wedi gweithio ar safle we sy'n wynebu cyhoeddus am fy arfer SharePoint yma yn Efrog newydd ac mae'n defnyddio llawer o alwadau JavaScript a gweddill i dangos y cynnwys.

Ystod datblygu prif linell, Dwi'n creu set fach gyda dim ond 10 neu felly roedd rhesi yn rhestr bersonol a galw fy weddill ei dynnu oddi yno.  Unwaith yr wyf yn rhygnu ar y rhestr i gael ychydig gannoedd o rhesi o ddata i brofi ar gyfer twf a ragwelir, Yr oedd yr oeddwn yn mynd yn union 100 rhesi a dychwelyd yn ôl ar fy galwadau weddill.

Mae hwn yn rhywbeth syml iawn i fynd i'r afael â.  Yn fy achos (a chredaf yn y rhan fwyaf o achosion), galw weddill diofyn i SharePoint (ac o bosibl fel diwydiant safonol?) dychwelyd 100 rhesi.  I ddychwelyd mwy na diofyn, Defnyddiwch y paramedr $top ar eich galwad, fel yn:

GAEL /Insights Dev/_api/web/lists/GetByTitle('MockBlog')/eitemau?$Dewiswch = ID,Teitl,Categorïau/teitl,Blog_x0020_Author/teitl,DatePublished,BlogSummary&$ehangu = Blog_x0020_Author,Categorïau&$Hidlydd =&$brig = 9999

Cydiais 9999 yn yr achos hwn ers gwn growth-wise, Ni fydd mwy na 200 neu felly roedd rhesi yn ychwanegu at y rhestr hon yn y flwyddyn.  Os daw'n ungainly, gallwn weithredu rhai tudalennu i lawr y ffordd.

</diwedd>

undefinedTanysgrifio i fy mlog.

Dilynwch fi ar Twitter yn http://www.twitter.com/pagalvin