Archivo de la categoría: RESTO

HTTP 406 Error al utilizar $http.get Angular contra SharePoint resto puntos finales

Actualización: Marc AD ndersson señaló esta gran pieza de información: http://blogs.Office.com/2014/08/13/JSON-Light-support-Rest-SharePoint-API-released/. Eso explica mucho :).

Nunca puede ser el peor título de una entrada de blog! ANYHOO.

Normalmente hago todos mis prototipos contra una instancia O365. Tengo mi instancia personal así que no tengo que estar preocupado de afectando a nadie. Como acotación al margen – recuerda cuando llamamos llevados alrededor de las máquinas virtuales en nuestros ordenadores portátiles con musgo – SQL Server, IIS, decidir vs Hyper-V. VMWare? En fin...

Había desarrollado una aplicación usando Angular en este entorno que hace, entre otras cosas, Esto:

$http.Get(serverUrl)
.éxito(función(datos, estado, cabeceras, config) {

var getLinksResponse = datos;

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

// y así sucesivamente y así producir espuma

Esto estaba trabajando muy bien en dos diferentes entornos en línea de SharePoint. Sin embargo, Cuando mi colega lo portado a una instancia de Cloudshare, Me estaba poniendo un HTTP 406 error (que fue la primera vez que he tenido esa, Así que... ¡ yay, Creo que sí). Hicimos un poco de investigación y notó que el encabezado de "Aceptar" estaba fuera de. Estaba perfectamente contento con SharePoint online:

Aceptar: application/json

Pero la instancia cloudshare (que es SP en prem, alojado en un servidor virtual) Quería que el clásico "odata = verbose" agregó también en:

Aceptar: application/json;OData = verbose

Para arreglar eso, Hemos añadido la rúbrica como tal:

var config = {cabeceras: {
'Aceptar': ' application/json;OData = verbose'
}
};

$http.Get(serverUrl,config)
.éxito(función(datos, estado, cabeceras, config) {

var getLinksResponse = datos;

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

// y así sucesivamente y así producir espuma

Que se deshizo de la 406, pero también cambió el formato de la respuesta. Era más... detallado. (jaja!) Más cambios fueron necesarios y aquí está el resultado final:

var config = {cabeceras: {
'Aceptar': ' application/json;OData = verbose'
}
};

$http.Get(serverUrl,config)
.éxito(función(datos, estado, cabeceras, config) {

var getLinksResponse = datos;

getLinksResponse.d.results.forEach(función(theResult) {

// y así sucesivamente y así producir espuma

Esto sólo se convirtió en un 30 minuto problema para nosotros, así que suerte. Esperemos que alguien encuentra esta útil.

</final>

Cómo especificar la gente como un ámbito de búsqueda / Fuente del contenido mediante SharePoint 2013 API REST

Tenía razón para trabajar con el SharePoint 2013 API de búsqueda por medio de descanso por primera vez. Quería buscar personas, no documentos. La clave de aprendizaje aquí es que especifique las fuentes de contenido a través de su GUID (o por lo menos en este caso). El siguiente fragmento de código jQuery se muestra cómo:

    loadExpertsAsync: función() {

        jQuery.support.cors = verdadero;

        $.Ajax({
            URL: Esto.CreateFullApiUrl() +
                "?QueryText = 'portales'&sourceid = 'b09a7990-05ea-4af9-81ef-edfab16c4e31'" +
                "&selectproperties ='LinkedInProfileUrl,GoogleCirclesProfileUrl,BALargeProfilePictureUrls,BAGridPictures,WorkEmail,Habilidades,Acerca de mi,Intereses,JobTitle,PastProjects,PictureURL,PreferredName,TwitterHandle,LinkedInProfileUrl,PreferredName,GoogleCirclesProfileUrl'" +
                "&ROWLIMIT = 99",
            método: "Obtener",
            cabeceras: { "Aceptar": "application/json; OData = verbose" },
            caché: falso,
            éxito: función (resultado) {

En mi caso, Estoy compitiendo la API con SharePoint online. Para obtener el GUID, He seguido estos pasos:

  1. Acceso al centro de administración de SharePoint
  2. Seleccione "Buscar" de la mano izquierda de navegación
  3. Seleccione "Administrar fuentes resultado"
  4. Seleccione "Resultados de la población Local"
  5. Mira la URL.

Parecía un poco a mi URL:

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

El parámetro sourceid es lo que funcionó para mí.

(Entiendo que el sourceid puede realmente ser una especie de permanente con SP, pero siempre a comprobar todos modos 🙂 ).

</final>

undefinedSuscribirse a mi blog.

Sígueme en Twitter en http://www.twitter.com/pagalvin

Ejemplo SharePoint resto llamadas

Aquí hay un conjunto de llamadas a resto muestra que funciona para mí y puede ayudarte, así. Como de 02/2014, hay dos ejemplos 🙂

  1. Referencia a una columna con espacios en su nombre
  2. Referencia a una columna de selección múltiple
  3. Realizar una búsqueda de personas vía resto

 

Agregaré a esto conforme pasa el tiempo.

Aquí están algunas tintas útiles que he encontrado así como:

Referencia a una columna con espacios en su nombre

Crear una lista personalizada con una columna denominada a "Autor del Blog" (espacio entre el Blog y autor).

El $select para hacer referencia a esa columna es:

image

Simplemente reemplace el espacio con "_x0020_". Vemos el _x0020_ en muchos ejemplos a través de la Internet y el resto no es diferente.

Si no haces eso, es probable que un error como este:

La expresión “Autor del blog” No es válido.

Bastante fácil.

Referencia a una columna de búsqueda selección múltiple

Configurar:

  1. Crear una lista personalizada denominada categorías.
  2. Añadir algunas categorías. He añadido categorías así:image
  3. Crear otra lista personalizada denominada MockBlog y Añadir categorías como una columna de lista de selección múltiple (o columna de sitio si es cómo tiras).

Agregar algunos elementos a la lista de Mockblog y estás listo.

Una llamada de estilo Ajax usando jQuery se verá algo como esto:

serverUrl  = "/_api/web/listas/GetByTitle('MockBlog')/artículos" +
             "?$Seleccione = Title,Categorías/título,Blog_x0020_Author/título" + 
             "&$ampliar = Blog_x0020_Author,Categorías";

Estamos contando SharePoint "Dame el título para todas las categorías (Categorías/título). Obtener los valores reales para Título por $ampliarIng la lista categorías." (Parafraseando a mi descanso es probablemente bastante flojo, Pero cómo estoy interpretando).

Si lo haces vía JavaScript y usando Fiddler para mirar la salida, a cambio tienes algo como esto:

 

image

(Lo anterior es un objeto JSON)

Realizar una búsqueda de personas vía resto

Lo escribió en su blog acerca de esto por separado. La clave consiste en especificar un parámetro sourceid cuyo valor es el GUID de la fuente de contenido de gente Local. (Fuentes de contenido solían llamarse alcances y es oh-mi tanto por no llamarlo todo un ámbito para mí!).

Lea más sobre ello aquí: http://www.mstechblogs.com/paul/?p=10385

 

</final>

undefinedSuscribirse a mi blog.

Sígueme en Twitter en http://www.twitter.com/pagalvin

Fácil y rápida: Crear un sitio de SharePoint usando resto

Hay un montón de recursos mostrar cómo hacerlo, Pero no pude encontrar un enlace acudir integral, Así que aquí estamos.

Puede crear un sitio de SharePoint usando la API de REST.  Aquí hay un ejemplo totalmente al horno:

<!--
    SiteRequestForm.html: Recopilar información y crear un sitio para el usuario.
-->

<Centro>
<mesa>
    <TR>
        <TD>Nombre del sitio:</TD>
        <TD><entrada tipo= "text" nombre"SiteName =" ID."SiteName =" /></TD>
    </TR>
    <TR>
        <TD colspan= "2">
            <entrada tipo= "enviar" ID.= CreateSiteButton"" valor= "Crear el sitio" />
        </TD>
    </TR>
</mesa>
</Centro>

<secuencia de comandos src="../Plugins/jQuery-1.11.0.min.js"></secuencia de comandos>

<secuencia de comandos>
var CreateSiteLogicContainer = {

    createSiteData: {
            "los parámetros": {
                __metadata: { "tipo": "SP.WebInfoCreationInformation" },
                URL: "Paultest1",
                Título: "Paultest1",
                Descripción: "resto-creado web por Pablo!",
                Idioma: 1033,
                WebTemplate: "sts",
                UseUniquePermissions: falso
            }
    },

    createSite: función () {

        jQuery.support.cors = verdadero;

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

            cabeceras: {
                "Aceptar": "application/json; OData = verbose",
                "content-type": "application/json;OData = verbose",
                "X-RequestDigest": $("#__REQUESTDIGEST").Val()
            },

            datos: JSON.stringify(CreateSiteLogicContainer.createSiteData),

            éxito: función () { alerta("el éxito"); },
            error: función () { alerta("error"); }

        });
    },

    wireUpForm: función () {
        $("#CreateSiteButton").Haga clic en(función () {
            alerta("A punto de probar y crear el sitio.");
            CreateSiteLogicContainer.createSite();
        });
    }


}

CreateSiteLogicContainer.wireUpForm();

</secuencia de comandos>

Cuando exitoso, obtienes un paquete JSON en respuesta así:

image

Mis pensamientos claves y aprendizajes de esta inclusión:

  • Este enfoque utiliza jQuery.  En mi caso, mi biblioteca jQuery se encuentra en ".../ plugins. "  Usted querrá cambiar eso para señalar su lugar favorito de JQ.
  • Puede copiar y pegar ese fragmento entero en un elemento Web Editor de contenido en una página y debería funcionar bien.  Usted querrá cambiar el punto final de la llamada de API y asegúrese de que usted referencia JQ correctamente.
  • La URL es relativa a punto final de su API.  En mi caso, es crear subsitios debajo https://bigapplesharepoint.com
  • No es necesario proporcionar una longitud del contenido. Algunas entradas en el blog y MSDN documento implica que hacer, Pero pasó por mí automáticamente, que supongo que está siendo manejado por la llamada .ajax $ sí mismo.
  • Esta línea es necesaria para evitar una respuesta "prohibida": "X-RequestDigest": $("#__REQUESTDIGEST").Val().  Hay otras maneras de hacerlo, Pero esto es muy bonito.  He perdido el enlace al blog que proporcionan este acceso directo.  H/T te, misterioso blogger!

Buena suerte y espero que esto ayude a alguien.

</final>

undefinedSuscribirse a mi blog.

Sígueme en Twitter en http://www.twitter.com/pagalvin

Rápida y sencilla: SharePoint resto llamar sólo devuelve 100 Registros

Yo he estado trabajando en un sitio web orientada al público para mi práctica en SharePoint Nueva York y usa un montón de llamadas JavaScript y resto para mostrar contenido.

Durante el desarrollo principal, Sólo se crea un pequeño conjunto de datos con 10 o así las filas de una lista personalizada y mis llamadas de resto todo tiraron desde allí.  Una vez me encontré la lista para tener unas cien filas de datos para pruebas de crecimiento esperado, Encontré que estaba recibiendo exactamente 100 filas devueltas en mis llamadas resto.

Esto es una cosa muy simple a la dirección.  En mi caso (y yo creo en la mayoría de los casos), el valor predeterminado resto llamadas a SharePoint (y posiblemente como un estándar del sector?) retorno 100 filas.  Para volver más que el valor por defecto, Utilice el parámetro $top en tu llamada, como en:

OBTENER /Insights Dev/_api/web/lists/GetByTitle('MockBlog')/artículos?$Seleccione ID =,Título,Categorías/título,Blog_x0020_Author/título,DatePublished,BlogSummary&$ampliar = Blog_x0020_Author,Categorías&$filtro =&$Top = 9999

Elegí 9999 en este caso puesto que sé growth-wise, No habrá más 200 o tan filas agregar a esta lista en un año.  Si se vuelve lento, podemos implementar una paginación en el camino.

</final>

undefinedSuscribirse a mi blog.

Sígueme en Twitter en http://www.twitter.com/pagalvin