Formatos de respuesta
Un recurso de búsqueda y seis formas de escribir la respuesta. Se elige con
format=; JSON es el formato por defecto y la referencia con la que
se describen los demás.
format | Content-Type | Estructura |
|---|---|---|
json | application/json | Un objeto, con los resultados en un array. |
ndjson | application/x-ndjson | Un objeto JSON por línea. La primera línea son los metadatos, marcados con "object":"meta". |
xml | application/xml | El mismo documento en XML, con las filas como <result>. |
csv | text/csv | Separado por punto y coma, sin línea de encabezado. |
tsv | text/tab-separated-values | Como CSV, separado por tabuladores. |
txt | text/plain | Una URL por línea. |
jsonl se acepta como otro nombre de ndjson.
Cuál usar
json para todo lo que quepa en memoria. ndjson para lo que no: no hay un array envolvente que esperar, los metadatos llegan antes que las filas y un lector puede empezar a procesar el primer resultado mientras el resto todavía está llegando. csv, tsv y txt para hojas de cálculo, tuberías de shell y para pasar un script desde las antiguas URL de exportación sin cambiar su analizador.
ndjson
{"object":"meta","query":"\"angular.min.js\"","page":1,"per_page":2,"total":278,"total_pages":139,"returned":2,"truncated":false,"took_ms":2}
{"domain":"imgbox.com","url":"https://imgbox.com/","rank":4187,"ranked":true}
{"domain":"angularjs.org","url":"https://angularjs.org/","rank":12376,"ranked":true}
Elegir las columnas
json y xml devuelven todos los campos. En cambio, los
formatos planos usan por defecto los campos de siempre, así que un script que
viene de las antiguas URL de exportación no necesita cambiar el analizador:
| Solicitud | Salida |
|---|---|
format=csv | imgbox.com;4187 |
format=csv&columns=url,rank | https://imgbox.com/;4187 |
format=csv&columns=domain | imgbox.com |
format=txt | https://imgbox.com/ |
format=csv&snippets=1 | imgbox.com;4187;the matching text |
format=csv&header=1 | primero, una línea domain;rank |
format=csv&delimiter=, | imgbox.com,4187 |
columns funciona en todos los formatos, así que
format=json con columns=domain devuelve objetos solo
con ese campo.
Detalles de los formatos planos
- Un valor solo se pone entre comillas cuando, de lo contrario, rompería la fila: contiene el delimitador, unas comillas o un salto de línea. La salida normal
domain;rankva sin comillas. - Las comillas dentro de un valor entre comillas se duplican, como espera el formato CSV.
- Los fragmentos, al ser una lista, se unen con
...en una sola celda. - Un sitio sin posición tiene la celda de posición vacía, que es como se escribe
nullaquí. - Los totales no caben en una fila, así que van en los encabezados
X-Total-Results,X-Returned-ResultsyX-Truncated. Se envían en todos los formatos.
Estas son las serializaciones propias de la nueva API, no una reedición de las antiguas exportaciones. La estructura es familiar a propósito, pero solo las antiguas URL garantizan los bytes exactos.
Formatos y errores
csv, tsv y txt son formatos para filas y
nada más, así que pedir uno de ellos en /v1/account da
400 format_not_available. Los errores en sí se devuelven en JSON, o
en XML si es lo que se pidió.