Buscar

Es posible buscar paquetes disponibles en un origen de paquete mediante la API V3. El recurso utilizado para realizar búsquedas es el recurso SearchQueryService que se encuentra en el índice de servicio.

Control de versiones

Se usan los siguientes valores @type:

Valor de @type Notas
SearchQueryService La versión inicial
SearchQueryService/3.0.0-beta Alias de SearchQueryService
SearchQueryService/3.0.0-rc Alias de SearchQueryService
SearchQueryService/3.5.0 Incluye compatibilidad con los parámetros de consulta packageType

SearchQueryService/3.5.0

Esta versión presenta compatibilidad con el parámetro de consulta packageType y la propiedad de respuesta packageTypes, lo que permite el filtrado por tipos de paquetes definidos por el autor. Es totalmente compatible con las consultas a SearchQueryService.

URL base

La dirección URL base de las siguientes API es el valor de la propiedad @id asociada a uno de los valores @type de los recursos mencionados anteriormente. En el documento siguiente, se usará la dirección URL base del marcador de posición {@id}. La dirección URL base puede cambiar en función de los cambios de implementación o infraestructura dentro del origen del paquete, por lo que el software cliente debe capturarla dinámicamente desde el índice de servicio.

Métodos HTTP

Todas las direcciones URL que se encuentran en el recurso de registro admiten los métodos HTTP GET y HEAD.

Búsqueda de paquetes

La API de búsqueda permite a un cliente consultar una página de paquetes que se corresponda con una consulta de búsqueda especificada. La interpretación de la consulta de búsqueda (por ejemplo, la tokenización de los términos de búsqueda) viene determinada por la implementación del servidor, pero la expectativa general es que la consulta de búsqueda se utilice para buscar id., títulos, descripciones y etiquetas de paquete coincidentes. También se pueden tener en cuenta otros campos de metadatos del paquete.

Un paquete que no aparezca en la lista tampoco debería aparecer nunca en los resultados de la búsqueda.

GET {@id}?q={QUERY}&skip={SKIP}&take={TAKE}&prerelease={PRERELEASE}&semVerLevel={SEMVERLEVEL}&packageType={PACKAGETYPE}

Parámetros de solicitud

Nombre En Tipo Obligatorio Notas
q Dirección URL string no Términos de búsqueda que se utilizan para filtrar paquetes
skip URL integer no Número de resultados que se van a omitir, para la paginación
take URL integer no Número de resultados que se van a devolver, para la paginación
versión preliminar URL boolean no true o false que determina si se deben incluir los paquetes de versión preliminar
semVerLevel Dirección URL string no Cadena de versión de SemVer 1.0.0.
packageType Dirección URL string no Tipo de paquete que se usará para filtrar paquetes (agregado en SearchQueryService/3.5.0)

La consulta de búsqueda q se analiza de una manera definida por la implementación del servidor. nuget.org admite el filtrado básico en una variedad de campos. Si no se proporciona q, se deben devolver todos los paquetes dentro de los límites impuestos por las acciones “Skip” y “Take”. Esto habilita la pestaña “Examinar” en la experiencia de Visual Studio de NuGet.

El parámetro skip se establece de forma predeterminada en 0.

El parámetro take debería ser un entero mayor que cero. La implementación del servidor puede imponer un valor máximo.

Nota:

nuget.org limita el parámetro skip a 3000, y el parámetro take a 1000.

Si no se proporciona prerelease, se excluyen los paquetes de versión preliminar.

El parámetro de consulta semVerLevel se usa para participar en los paquetes de SemVer 2.0.0. Si se excluye este parámetro de consulta, solo se devolverán los paquetes con versiones compatibles con SemVer 1.0.0 (con las advertencias del control de versiones estándar de NuGet, como las cadenas de versión con 4 partes enteras). Si se proporciona semVerLevel=2.0.0, se devolverán los paquetes compatibles con SemVer 1.0.0 y SemVer 2.0.0. Consulte el artículo sobre la compatibilidad con SemVer 2.0.0 para nuget.org para obtener más información.

El parámetro packageType se usa para filtrar aún más los resultados de la búsqueda solo en paquetes que tengan al menos un tipo de paquete que se corresponda con el nombre del tipo de paquete. Si el tipo de paquete proporcionado no es un tipo de paquete válido tal como se define en el documento de tipo de paquete, se devolverá un resultado vacío. Si el tipo de paquete proporcionado está vacío, no se aplicará ningún filtro. En otras palabras, el hecho de no pasar ningún valor al parámetro packageType será como si no se hubiera pasado el parámetro.

Respuesta

La respuesta es un documento JSON que contiene hasta take resultados de la búsqueda. Los resultados de la búsqueda se agrupan por id. de paquete.

El objeto JSON raíz tiene las siguientes propiedades:

Nombre Type Obligatorio Notas
totalHits integer Número total de coincidencias, sin tener en cuenta skip y take
data matriz de objetos Resultados de la búsqueda que se corresponden con la solicitud

Resultado de la búsqueda

Cada elemento de la matriz data es un objeto JSON formado por un grupo de versiones de paquete que comparten el mismo id. de paquete. El objeto tiene las siguientes propiedades:

Nombre Type Obligatorio Notas
id string Id. del paquete coincidente
version string Cadena de versión completa de SemVer 2.0.0 del paquete (podría contener metadatos de generación)
descripción string no
versions matriz de objetos Todas las versiones del paquete que se correspondan con el parámetro prerelease
authors cadena o matriz de cadenas no
iconUrl string no
licenseUrl string no
owners cadena o matriz de cadenas no Una cadena representa el nombre de usuario de un solo propietario.
projectUrl string no
registro string no Dirección URL absoluta del índice de registro asociado
summary string no
etiquetas cadena o matriz de cadenas no
title string no
totalDownloads integer no Este valor se puede deducir de la suma de descargas en la matriz versions
verificada boolean no Un valor booleano JSON que indica si se ha verificado el paquete
packageTypes matriz de objetos Los tipos de paquete definidos por el autor del paquete (agregados en SearchQueryService/3.5.0)

En nuget.org, un paquete verificado es uno que tiene un id. de paquete que se corresponde con un prefijo de id. reservado y que pertenece a uno de los propietarios del prefijo reservado. Para más información, consulta la documentación sobre la reserva de prefijos de id.

Los metadatos que contiene el objeto del resultado de búsqueda se toman de la última versión del paquete. Cada elemento de la matriz versions es un objeto JSON que consta de las siguientes propiedades:

Nombre Type Obligatorio Notas
@id string Dirección URL absoluta de la hoja de registro asociada
version string Cadena de versión completa de SemVer 2.0.0 del paquete (podría contener metadatos de generación)
Descargas integer Número de descargas para esta versión de paquete específica

La matriz packageTypes siempre constará de al menos un elemento (1). El tipo de paquete para un id. de paquete determinado se considera que se corresponde con los tipos de paquete definidos por la última versión del paquete con respecto a los demás parámetros de búsqueda. Cada elemento de la matriz packageTypes es un objeto JSON que consta de las siguientes propiedades:

Nombre Type Obligatorio Notas
nombre string Nombre del tipo de paquete.

Solicitud de ejemplo

GET https://search-sample.nuget.org/query?q=NuGet.Versioning&prerelease=false&semVerLevel=2.0.0

Asegúrate de capturar la dirección URL base (https://search-sample.nuget.org/query en este ejemplo) del índice de servicio, tal y como se indica en la sección de la dirección URL base.

Respuesta de muestra

{
  "totalHits": 2,
  "data": [
    {
      "registration": "https://api.nuget.org/v3/registration-sample/nuget.versioning/index.json",
      "id": "NuGet.Versioning",
      "version": "4.4.0",
      "description": "NuGet's implementation of Semantic Versioning.",
      "summary": "",
      "title": "NuGet.Versioning",
      "licenseUrl": "https://raw.githubusercontent.com/NuGet/NuGet.Client/dev/LICENSE.txt",
      "tags": [ "semver", "semantic", "versioning" ],
      "authors": [ "NuGet" ],
      "totalDownloads": 141896,
      "verified": true,
      "packageTypes": [
        {
          "name": "Dependency"
        }
      ],
      "versions": [
        {
          "version": "3.3.0",
          "downloads": 50343,
          "@id": "https://api.nuget.org/v3/registration-sample/nuget.versioning/3.3.0.json"
        },
        {
          "version": "3.4.3",
          "downloads": 27932,
          "@id": "https://api.nuget.org/v3/registration-sample/nuget.versioning/3.4.3.json"
        },
        {
          "version": "4.0.0",
          "downloads": 63004,
          "@id": "https://api.nuget.org/v3/registration-sample/nuget.versioning/4.0.0.json"
        },
        {
          "version": "4.4.0",
          "downloads": 617,
          "@id": "https://api.nuget.org/v3/registration-sample/nuget.versioning/4.4.0.json"
        }
      ]
    },
    {
      "@id": "https://api.nuget.org/v3/registration-sample/nerdbank.gitversioning/index.json",
      "@type": "Package",
      "registration": "https://api.nuget.org/v3/registration-sample/nerdbank.gitversioning/index.json",
      "id": "Nerdbank.GitVersioning",
      "version": "2.0.41",
      "description": "Stamps your assemblies with semver 2.0 compliant git commit specific version information and provides NuGet versioning information as well.",
      "summary": "Stamps your assemblies with semver 2.0 compliant git commit specific version information and provides NuGet versioning information as well.",
      "title": "Nerdbank.GitVersioning",
      "licenseUrl": "https://raw.githubusercontent.com/AArnott/Nerdbank.GitVersioning/ed547462f7/LICENSE.txt",
      "projectUrl": "http://github.com/aarnott/Nerdbank.GitVersioning",
      "tags": [ "git", "commit", "versioning", "version", "assemblyinfo" ],
      "authors": [ "Andrew Arnott" ],
      "totalDownloads": 11906,
      "verified": false,
      "versions": [
        {
          "version": "1.6.35",
          "downloads": 10229,
          "@id": "https://api.nuget.org/v3/registration-sample/nerdbank.gitversioning/1.6.35.json"
        },
        {
          "version": "2.0.41",
          "downloads": 1677,
          "@id": "https://api.nuget.org/v3/registration-sample/nerdbank.gitversioning/2.0.41.json"
        }
      ]
    }
  ]
}