Arkib Kategori: REHAT

HTTP 406 Ralat apabila menggunakan sudut $http.get berbanding SharePoint rehat hujung Mata

Mengemas kini: MARC AD ndersson menunjukkan ini sebahagian besar maklumat: http://Blogs.Office.com/2014/08/13/JSON-Light-support-Rest-SharePoint-api-Released/. Sebab itulah banyak :).

Ia mungkin tajuk posting blog paling teruk pernah! Anyhoo.

Saya biasanya lakukan semua prototaip saya terhadap contoh O365. Saya mempunyai contoh diri saya supaya saya tidak perlu bimbang tentang mempengaruhi orang lain. Seperti yang diperuntukkan untuk – ingat apabila kita memanggil dibawa sekitar Mesin maya pada komputer riba kami dengan Lumut – SQL Server, IIS, penentu vs Hyper-V. VMWare? Anyhoo...

Saya telah membangunkan sebuah aplikasi yang menggunakan sudut dalam persekitaran yang tidak, antara lain, ini:

$http.get(serverUrl)
.kejayaan(fungsi(data, status, header, config) {

VAR getLinksResponse = data;

getLinksResponse.value.forEach(fungsi(theResult) {

// dan sebagainya dan jadi buih

Ini adalah bekerja saja dalam dua berbeza SharePoint dalam talian persekitaran. Walau bagaimanapun, Bilakah rakan sekerja saya dipindahkan ia ke contoh Cloudshare, dia sering terlibat dengan HTTP 406 kesilapan (yang adalah kali pertama saya pernah mendapat satu itu, Jadi... yay, saya rasa). Kami melakukan sedikit kajian dan menyedari bahawa pengepala "Menerima" adalah dari. SharePoint dalam talian adalah sempurna gembira dengan:

Menerima: Permohonan/json

Tetapi contoh cloudshare (yang dihidupkan SP prem, dihoskan dalam pelayan maya) mahukan klasik yang "odata = banyak cakap" ditambah dalam serta:

Menerima: Permohonan/json;odata = banyak cakap

Untuk menetapkan bahawa, kami menambah pengepala Justeru:

tatarajah VAR = {header: {
'Menerima': ' permohonan/json;odata = banyak cakap '
}
};

$http.get(serverUrl,config)
.kejayaan(fungsi(data, status, header, config) {

VAR getLinksResponse = data;

getLinksResponse.value.forEach(fungsi(theResult) {

// dan sebagainya dan jadi buih

Yang dapat menghilangkan dalam 406, tetapi ia juga mengubah format maklum balas. Itu lebih banyak... banyak cakap. (Haha!) Lebih banyak perubahan yang diperlukan dan inilah keputusan akhir:

tatarajah VAR = {header: {
'Menerima': ' permohonan/json;odata = banyak cakap '
}
};

$http.get(serverUrl,config)
.kejayaan(fungsi(data, status, header, config) {

VAR getLinksResponse = data;

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

// dan sebagainya dan jadi buih

Ini hanya bertukar menjadi sebuah 30 minit masalah untuk kita, Jadi kita lucked Keluar. Mudah-mudahan orang mendapati ini berguna.

</akhir>

Bagaimana Untuk Tentukan Rakyat sebagai Skop Carian / Kandungan Sumber Menggunakan SharePoint 2013 REST API

Saya punya alasan untuk bekerja dengan SharePoint dalam 2013 Search API melalui rehat buat pertama kalinya. Saya ingin mencari orang-orang, dokumen tidak. Kekunci yang belajar di sini adalah bahawa anda tentukan kandungan sumber melalui GUID dalam (atau sekurang-kurangnya dalam kes ini). Menunjukkan cebisan jQuery berikut bagaimana:

    loadExpertsAsync: fungsi() {

        jQuery.support.cors = benar;

        $.Ajax({
            url: ini.CreateFullApiUrl() +
                "?querytext = 'Portal'&sourceid = 'b09a7990-05ea-4af9-81ef-edfab16c4e31'" +
                "&selectproperties ='LinkedInProfileUrl,GoogleCirclesProfileUrl,BALargeProfilePictureUrls,BAGridPictures,WorkEmail,Kemahiran,AboutMe,Kepentingan,JobTitle,PastProjects,PictureURL,PreferredName,TwitterHandle,LinkedInProfileUrl,PreferredName,GoogleCirclesProfileUrl'" +
                "&rowlimit = 99",
            kaedah: "MENDAPATKAN",
            header: { "Menerima": "Permohonan/json; odata = banyak cakap" },
            cache: palsu,
            kejayaan: fungsi (keputusan) {

Dalam kes saya,, Aku berlari API terhadap SharePoint dalam talian. Untuk mendapatkan GUID, Saya mengikuti langkah-langkah ini:

  1. Mencapai Pusat Tadbir SharePoint
  2. Pilih "carian" dari navigasi sebelah kiri
  3. Pilih "Urus sumber-sumber hasil"
  4. Pilih "Hasil penduduk tempatan"
  5. Lihatlah URL.

URL saya kelihatan seakan-akan:

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

Sourceid parameter adalah apa yang bekerja untuk saya.

(Saya faham bahawa sourceid yang benar-benar boleh menjadi sejenis benda yang kekal dengan SP, but I’ll always check anyway 🙂 ).

</akhir>

undefinedLanggan ke blog saya.

Mengikuti aku di Twitter http://www.twitter.com/pagalvin

Panggilan Contoh SharePoint REST

Di sini adalah sekumpulan sampel lain panggilan yang bekerja untuk saya dan mungkin membantu anda serta. Sehingga 02/2014, there are two examples 🙂

  1. Rujukan medan dengan kawasan atas namanya
  2. Rujukan lajur pelbagai Pilih
  3. Melakukan carian orang melalui rehat

 

Saya akan menambah ini sebagai Pas masa.

Berikut adalah beberapa dakwat berguna yang saya dapati juga:

Rujukan medan dengan kawasan atas namanya

Saya mencipta senarai tersuai dengan satu kolum yang dinamakan "Penulis Blog" (Ruang di antara Blog dan penulis).

$select untuk rujukan medan yang merupakan:

image

Hanya menggantikan tempat dengan "_x0020_". Kita lihat _x0020_ dalam banyak contoh di seluruh Internet ini dan SELEBIHNYA adalah tidak berbeza.

Jika anda tidak berbuat demikian, anda bertanggungjawab untuk mendapatkan mesej ralat seperti ini:

Ungkapan “Penulis blog” adalah tidak sah.

Cukup mudah.

Rujukan lajur pelbagai Pilih Lookup

Sediakan:

  1. Mencipta senarai tersuai dinamakan kategori.
  2. Tambah beberapa kategori. Saya menambah kategori Ehwal:image
  3. Cipta senarai tersuai lain yang dipanggil MockBlog dan Tambah Kategori sebagai lajur pelbagai Pilih senarai (atau tapak tiang jika Itulah bagaimana anda menggulung).

Menambah beberapa item ke senarai Mockblog dan anda sudah bersedia.

Panggilan Ajax gaya yang menggunakan jQuery akan terlihat seperti ini:

serverUrl  = "/_api/web/senarai/GetByTitle('MockBlog')/barang-barang" +
             "?$Pilih Tajuk =,Kategori/tajuk,Blog_x0020_Author/tajuk" + 
             "&$mengembangkan = Blog_x0020_Author,Kategori";

Kami sudah memberitahu SharePoint "memberikan tajuk untuk semua kategori (Kategori/tajuk). Mendapatkan nilai sebenar bagi Title oleh $memperluaskanING dalam senarai kategori." (Saya tenang paraphrasing yang mungkin agak longgar, tetapi ini Bagaimana saya saya mentafsirkan).

Jika anda melakukan ini melalui JavaScript dan menggunakan Fiddler untuk melihat output, anda mendapat sesuatu seperti ini sebagai balasan:

 

image

(Di atas adalah objek JSON)

Melakukan carian orang melalui rehat

Saya blogged tentang perkara ini secara berasingan. Utama adalah untuk menentukan parameter sourceid nilai yang merupakan GUID sumber kandungan penduduk tempatan. (Kandungan sumber digunakan untuk dihubungi skop dan memang saya-oh-saya tidak begitu sukar untuk memanggil semua skop bagi saya!).

Baca lebih lanjut mengenai di sini: http://www.mstechblogs.com/paul/?p=10385

 

</akhir>

undefinedLanggan ke blog saya.

Mengikuti aku di Twitter http://www.twitter.com/pagalvin

Pantas dan Mudah: Cipta Laman REST SharePoint Menggunakan

Terdapat banyak sumber sekitar menunjukkan bahawa cara untuk melakukan ini, tetapi saya tidak dapat mencari pautan go ke komprehensif, Jadi di sini kita akan.

Anda boleh mencipta tapak SharePoint menggunakan API lain.  Berikut adalah satu contoh yang dimasak sepenuhnya:

<!--
    SiteRequestForm.html: Mengumpul maklumat dan mencipta Laman web untuk pengguna.
-->

<pusat>
<jadual>
    <tr>
        <td>Nama tapak:</td>
        <td><input Jenis= "teks" Nama= "SiteName" id= "SiteName" /></td>
    </tr>
    <tr>
        <td colspan= "2">
            <input Jenis= "serah" id= "CreateSiteButton" nilai= "Mewujudkan laman web ini" />
        </td>
    </tr>
</jadual>
</pusat>

<skrip JPP=".. /Plugins/jQuery-1.11.0.min.js"></skrip>

<skrip>
VAR CreateSiteLogicContainer = {

    createSiteData: {
            "parameter": {
                __metadata: { "jenis": "SP. WebInfoCreationInformation" },
                URL: "Paultest1",
                Title: "Paultest1",
                Penerangan: "rehat-dicipta web oleh Paul!",
                Bahasa: 1033,
                WebTemplate: "sts",
                UseUniquePermissions: palsu
            }
    },

    createSite: fungsi () {

        jQuery.support.cors = benar;

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

            header: {
                "Menerima": "permohonan/json; odata = banyak cakap",
                "content-type": "permohonan/json;odata = banyak cakap",
                "X-RequestDigest": $("#__REQUESTDIGEST").val()
            },

            data: JSON.stringify(CreateSiteLogicContainer.createSiteData),

            kejayaan: fungsi () { berjaga-jaga("kejayaan"); },
            kesilapan: fungsi () { berjaga-jaga("Ralat"); }

        });
    },

    wireUpForm: fungsi () {
        $("#CreateSiteButton").klik(fungsi () {
            berjaga-jaga("Kira-kira untuk mencuba dan mewujudkan laman web ini.");
            CreateSiteLogicContainer.createSite();
        });
    }


}

CreateSiteLogicContainer.wireUpForm();

</skrip>

Apabila berjaya, anda akan mendapat satu paket JSON dalam jawapan seperti ini:

image

Utama pemikiran dan learnings daripada ini termasuk saya:

  • Pendekatan ini menggunakan jQuery.  Dalam kes saya,, Pustaka jQuery terletak di "... / plugin. "  Anda akan mahu ubah hakikat itu untuk menghala ke lokasi JQ kegemaran anda.
  • Anda boleh menyalin dan menampal cebisan itu turun ke bahagian Web Editor kandungan di halaman dan ia harus bekerja saja.  Anda akan mahu untuk mengubah titik tamat panggilan API dan pastikan anda rujukan JQ dengan betul.
  • URL adalah berbanding dengan titik tamat API anda.  Dalam kes saya,, Ia mewujudkan sub tapak di bawahnya https://bigapplesharepoint.com
  • Anda tidak perlu menyediakan kandungan-panjang. Beberapa posting blog dan MSDN dokumen membayangkan yang anda lakukan, tetapi berlaku untuk saya secara automatik, yang saya anggap sebagai dikendalikan oleh panggilan .ajax $ sendiri.
  • Talian ini diperlukan untuk mengelakkan jawapan "haram": "X-RequestDigest": $("#__REQUESTDIGEST").val().  Terdapat pelbagai cara untuk melakukannya, tetapi ini adalah cukup bagus.  Saya telah kehilangan link ke blog yang diberikan pintasan ini.  H/T kepada anda, blogger misteri!

Nasib baik dan harap ini membantu seseorang.

</akhir>

undefinedLanggan ke blog saya.

Mengikuti aku di Twitter http://www.twitter.com/pagalvin

Cepat mudah dan: SharePoint REST Call Pulangan Hanya 100 Rekod

Saya telah bekerja pada laman web awam menghadapi untuk SharePoint amalan saya di sini dalam New York dan ia menggunakan banyak panggilan JavaScript dan SELEBIHNYA untuk menunjukkan kandungan.

Semasa pembangunan tali tambahan gelung kekili, Saya mencipta dataset kecil dengan hanya 10 atau jadi baris dalam senarai tersuai dan panggilan rehat saya semua ditarik dari situ.  Pernah saya terserempak sehingga senarai untuk mempunyai beberapa ratus baris data untuk menguji jangkaan pertumbuhan, Saya mendapati bahawa saya mendapat betul-betul 100 baris yang kembali semula pada panggilan rehat saya.

Ini adalah satu perkara yang sangat mudah untuk alamat.  Dalam kes saya, (dan saya percaya dalam kebanyakan kes), panggilan lain lalai untuk SharePoint (dan mungkin sebagai satu standard industri?) kembali 100 baris.  Untuk kembali lebih daripada lalai, Gunakan $top parameter pada panggilan anda, seperti dalam:

MENDAPAT /Insights Dev/_api/web/lists/GetByTitle('MockBlog')/barang-barang?$pilih = ID,Title,Kategori/tajuk,Blog_x0020_Author/tajuk,DatePublished,BlogSummary&$mengembangkan = Blog_x0020_Author,Kategori&$penapis =&$atas = 9999

Saya memilih 9999 dalam kes ini kerana saya tahu bahawa growth-wise, tidak akan lebih daripada 200 atau jadi baris ditambah ke senarai ini dalam setahun.  Jika ia menjadi ungainly, kita boleh melaksanakan penghalaman beberapa hujung jalan.

</akhir>

undefinedLanggan ke blog saya.

Mengikuti aku di Twitter http://www.twitter.com/pagalvin