Arsip Kategori: SISANYA

HTTP 406 Kesalahan saat menggunakan sudut $http.get terhadap SharePoint seluruh titik akhir

Update: Marc AD ndersson menunjukkan sepotong besar info: http://Blogs.Office.com/2014/08/13/JSON-Light-support-Rest-SharePoint-api-Released/. Itu menjelaskan banyak hal :).

Itu mungkin judul posting blog terburuk pernah! Anyhoo.

Saya biasanya melakukan semua saya prototyping terhadap O365 instance. Aku punya contoh pribadi saya sehingga saya tidak perlu khawatir tentang mempengaruhi orang lain. Sebagai samping-ingat saat kami panggilan dilakukan di sekitar mesin virtual pada laptop kami dengan Lumut-SQL Server, IIS, memutuskan vs Hyper-V. VMWare? Anyhoo...

Saya telah mengembangkan sebuah aplikasi yang menggunakan sudut dalam lingkungan ini yang melakukan, di antara hal lain, ini:

$http.Get(serverUrl)
.sukses(fungsi(data, status, header, config) {

var getLinksResponse = data;

getLinksResponse.value.forEach(fungsi(theResult) {

// dan seterusnya dan jadi buih

Ini bekerja baik di dua berbeda SharePoint online lingkungan. Namun, Ketika rekan saya porting ke Cloudshare instance, Ia mendapatkan HTTP 406 kesalahan (yang adalah pertama kalinya saya pernah punya satu, Jadi... yay, Saya rasa). Kami melakukan sedikit riset dan melihat bahwa header "Menerima" adalah off. SharePoint online adalah sangat senang dengan:

Menerima: aplikasi json

Tetapi contoh cloudshare (yang merupakan SP pada prem, host di virtual server) ingin klasik "odata = verbose" ditambahkan dalam juga:

Menerima: aplikasi json;oData = verbose

Untuk memperbaikinya, Kami menambahkan header seperti:

var config = {header: {
'Menerima': ' aplikasi json;oData = verbose'
}
};

$http.Get(serverUrl,config)
.sukses(fungsi(data, status, header, config) {

var getLinksResponse = data;

getLinksResponse.value.forEach(fungsi(theResult) {

// dan seterusnya dan jadi buih

Yang menyingkirkan 406, Tapi itu juga mengubah format respon. Itu lebih... verbose. (Haha!) Lebih banyak perubahan yang diperlukan dan di sini adalah hasil akhir:

var config = {header: {
'Menerima': ' aplikasi json;oData = verbose'
}
};

$http.Get(serverUrl,config)
.sukses(fungsi(data, status, header, config) {

var getLinksResponse = data;

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

// dan seterusnya dan jadi buih

Ini hanya berubah menjadi 30 menit masalah bagi kita, Jadi kita beruntung. Mudah-mudahan seseorang menemukan ini berguna.

</akhir>

Cara menentukan orang sebagai lingkup Cari / Sumber konten menggunakan SharePoint 2013 REST API

Aku punya alasan untuk bekerja dengan SharePoint 2013 Search API melalui sisanya untuk pertama kalinya. Aku ingin Cari orang, bukan dokumen. Kunci belajar di sini adalah bahwa Anda menentukan sumber konten melalui GUID yang (atau setidaknya dalam kasus ini). Berikut jQuery potongan menunjukkan 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,Keterampilan,AboutMe,Kepentingan,JobTitle,PastProjects,PictureURL,PreferredName,TwitterHandle,LinkedInProfileUrl,PreferredName,GoogleCirclesProfileUrl'" +
                "&rowlimit = 99",
            metode: "MENDAPATKAN",
            header: { "Menerima": "aplikasi json; oData = verbose" },
            cache: palsu,
            sukses: fungsi (hasil) {

Dalam kasus saya, Saya menjalankan API terhadap SharePoint online. Untuk mendapatkan GUID, Aku mengikuti langkah-langkah:

  1. Mengakses SharePoint admin center
  2. Pilih "Cari" dari navigasi di sebelah kiri
  3. Pilih "Atur hasil sumber"
  4. Pilih "Masyarakat setempat hasil"
  5. Melihat URL.

URL saya melihat sesuatu seperti:

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 memahami bahwa sourceid benar-benar mungkin semacam hal yang permanen dengan SP, but I’ll always check anyway 🙂 ).

</akhir>

undefinedBerlangganan ke blog saya.

Ikuti saya di kegugupan di http://www.twitter.com/pagalvin

Contoh SharePoint sisanya panggilan

Di sini adalah sekumpulan panggilan sisa sampel yang bekerja untuk saya dan dapat membantu Anda serta. Sebagai 02/2014, ada dua contoh 🙂

  1. Referensi kolom dengan ruang dalam namanya
  2. Referensi kolom multi-pilih
  3. Melakukan pencarian orang melalui sisa

 

Saya akan menambahkan ini sebagai berjalannya waktu.

Berikut adalah beberapa tinta berguna yang saya telah menemukan juga:

Referensi kolom dengan ruang dalam namanya

Saya membuat daftar kustom dengan sebuah kolom yang bernama "Penulis Blog" (Ruang antara Blog dan penulis).

$select untuk referensi kolom adalah:

image

Hanya mengganti ruang dengan "_x0020_". Kita melihat _x0020_ dalam banyak contoh di seluruh internets dan sisanya tidak berbeda.

Jika Anda tidak melakukan yang, Anda bertanggung jawab untuk mendapatkan pesan kesalahan seperti ini:

Ekspresi “Penulis blog” ini tidak valid.

Cukup mudah.

Referensi kolom multi-pilih Lookup

Mengatur:

  1. Membuat daftar kustom yang bernama Kategori.
  2. Tambahkan beberapa kategori. Saya menambahkan kategori thusly:image
  3. Membuat daftar kustom yang lain yang disebut MockBlog dan menambahkan kategori sebagai kolom multi-pilih daftar (atau kolom situs jika itu adalah bagaimana Anda roll).

Menambahkan beberapa item ke daftar Mockblog dan Anda siap.

Panggilan gaya Ajax menggunakan jQuery akan terlihat seperti ini:

  = serverUrl "/_api/web/daftar/GetByTitle('MockBlog')/item" +
             "?$Pilih = judul,Kategori/judul,Blog_x0020_Author/judul" + 
             "&$memperluas = Blog_x0020_Author,Kategori";

Kami memberitahu SharePoint "memberi saya judul untuk semua kategori (Kategori/judul). Mendapatkan nilai yang sebenarnya untuk Judul oleh $memperluasing daftar kategori." (Saya parafrase tenang mungkin cukup longgar, Tapi ini bagaimana aku menafsirkan itu).

Jika Anda melakukan ini melalui JavaScript dan menggunakan Fiddler untuk melihat output, Anda mendapatkan sesuatu seperti ini sebagai balasannya:

 

image

(Di atas adalah sebuah objek JSON)

Melakukan pencarian orang melalui sisa

Aku blogged tentang hal ini secara terpisah. Kuncinya adalah untuk menentukan parameter sourceid yang nilainya adalah GUID sumber konten masyarakat setempat. (Sumber konten dulu disebut cakupan dan itu adalah my-oh-saya tidak begitu sulit untuk memanggil segala lingkup bagi saya!).

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

 

</akhir>

undefinedBerlangganan ke blog saya.

Ikuti saya di kegugupan di http://www.twitter.com/pagalvin

Cepat dan mudah: Buat situs SharePoint menggunakan sisa

Ada banyak sumber daya di yang menunjukkan bagaimana melakukan ini, tapi aku tidak bisa menemukan link masuk ke komprehensif, Jadi di sini kita berada.

Anda dapat membuat situs SharePoint menggunakan REST API.  Berikut adalah contoh sepenuhnya panggang:

<!--
    SiteRequestForm.html: Mengumpulkan informasi dan membuat situs untuk pengguna.
-->

<Pusat>
<Meja>
    <TR>
        <TD>Nama situs:</TD>
        <TD><masukan jenis= "teks" Nama= "SiteName" id= "SiteName" /></TD>
    </TR>
    <TR>
        <TD colspan= "2">
            <masukan jenis= "Kirim" id= "CreateSiteButton" nilai= "Buat situs" />
        </TD>
    </TR>
</Meja>
</Pusat>

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

<script>
var CreateSiteLogicContainer = {

    createSiteData: {
            "parameter": {
                __metadata: { "jenis": "SP.WebInfoCreationInformation" },
                URL: "Paultest1",
                Judul: "Paultest1",
                Deskripsi: sisanya-dibuat "web oleh Paulus!",
                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",
            metode: "POST",

            header: {
                "menerima": "aplikasi/json; oData = verbose",
                "content-type": "aplikasi/json;oData = verbose",
                "X-RequestDigest": $("#__REQUESTDIGEST").Val()
            },

            data: JSON.stringify(CreateSiteLogicContainer.createSiteData),

            sukses: fungsi () { peringatan("sukses"); },
            kesalahan: fungsi () { peringatan("kesalahan"); }

        });
    },

    wireUpForm: fungsi () {
        $("#CreateSiteButton").Klik(fungsi () {
            peringatan("Untuk mencoba dan membuat situs.");
            CreateSiteLogicContainer.createSite();
        });
    }


}

CreateSiteLogicContainer.wireUpForm();

</script>

Ketika sukses, Anda mendapatkan paket JSON dalam respon seperti ini:

image

Kunci pikiran dan pembelajaran dari ini meliputi:

  • Pendekatan ini menggunakan jQuery.  Dalam kasus saya, Perpustakaan jQuery saya berada di "../ plugin. "  Anda akan ingin untuk mengubahnya untuk menunjuk ke lokasi JQ favorit Anda.
  • Anda dapat menyalin dan menyisipkan potongan yang seluruh ke bagian Web Content Editor pada halaman dan itu harus bekerja dengan baik.  Anda akan ingin mengubah titik akhir dari API panggilan dan pastikan Anda referensi JQ dengan benar.
  • URL adalah relatif terhadap endpoint Anda API.  Dalam kasus saya, menciptakan sub situs di bawah https://bigapplesharepoint.com
  • Anda tidak perlu untuk memberikan konten-panjang. Beberapa posting blog dan MSDN dokumen menyiratkan bahwa Anda melakukan, tetapi terjadi bagi saya secara otomatis, yang saya asumsikan sedang ditangani oleh $AJAX panggilan itu sendiri.
  • Baris ini diperlukan untuk menghindari Tanggapan "dilarang": "X-RequestDigest": $("#__REQUESTDIGEST").Val().  Ada cara lain untuk melakukannya, Tapi ini cukup bagus.  Saya telah kehilangan link ke blog yang disediakan jalan pintas ini.  H/T ke Anda, misterius blogger!

Good luck dan berharap ini membantu seseorang.

</akhir>

undefinedBerlangganan ke blog saya.

Ikuti saya di kegugupan di http://www.twitter.com/pagalvin

Cepat dan sederhana: SharePoint sisanya panggilan hanya kembali 100 Catatan

Saya telah bekerja pada sebuah situs web menghadapi yang umum untuk praktek SharePoint saya di sini di New York dan itu menggunakan banyak JavaScript dan sisanya panggilan untuk menampilkan konten.

Selama pengembangan utama, Cara membuat dataset kecil dengan hanya 10 atau jadi baris dalam daftar kustom dan panggilan ISTIRAHAT saya semua diambil dari sana.  Sekali aku bumped up daftar yang memiliki beberapa ratus baris data untuk menguji untuk pertumbuhan diantisipasi, Saya menemukan bahwa saya mendapatkan persis 100 baris yang dikembalikan kembali pada panggilan ISTIRAHAT saya.

Ini adalah hal yang sangat sederhana ke alamat.  Dalam kasus saya (dan saya percaya dalam kebanyakan kasus), default sisanya panggilan untuk SharePoint (dan mungkin sebagai standar industri?) kembali 100 baris.  Kembali lebih dari default, Gunakan $top parameter pada panggilan Anda, seperti dalam:

Dapatkan /Insights Dev/_api/web/lists/GetByTitle('MockBlog')/item?$Pilih = ID,Judul,Kategori/judul,Blog_x0020_Author/judul,DatePublished,BlogSummary&$memperluas = Blog_x0020_Author,Kategori&$Filter =&$Top = 9999

Aku mengambil 9999 dalam kasus ini karena saya tahu bahwa growth-wise, tidak akan ada lebih dari 200 atau jadi baris ditambahkan ke daftar ini dalam setahun.  Jika ia menjadi canggung, kita dapat menerapkan beberapa paging di jalan.

</akhir>

undefinedBerlangganan ke blog saya.

Ikuti saya di kegugupan di http://www.twitter.com/pagalvin