Riferimento all'API REST di axe DevTools Linter
Guida di riferimento agli endpoint REST forniti da axe DevTools Linter
Axe DevTools Linter consente di verificare il codice per problemi di accessibilità utilizzando una API REST. Si crea un oggetto di richiesta HTTP contenente le righe di origine che si desidera controllare (nel corpo della richiesta come oggetto JSON) e il server restituisce un oggetto JSON di risposta che indica eventuali problemi di accessibilità rilevati dal server.
Il server può controllare i file React (.js, .jsx, .ts e .tsx), Vue (.vue), Angular (.component.html), HTML (.html, .htm e .xhtml) e Markdown (.md e .markdown).
Gli endpoint REST
Il server fornisce sei endpoint REST. Il primo endpoint, (/lint-source
), risponde alle richieste e controlla il codice per individuare eventuali problemi di accessibilità. POST
Il secondo endpoint, (/status
), risponde alle richieste e mostra se il server è disponibile con un codice di risposta 200 che indica che il server è in ascolto. GET
Il terzo endpoint, (/healthcheck
), risponde alle richieste, indica se il server è in esecuzione e restituisce il numero di versione del server in esecuzione. GET
I restanti tre endpoint consentono agli utenti dell'edizione SaaS di ottenere informazioni sull'utilizzo per la propria azienda nel suo complesso (/billing/enterprise
), per i propri utenti (/billing/user
) e per le proprie chiavi API (/billing/key
).
Gli endpoint REST sono i seguenti:
Endpoint | Tipo di richiesta | Note |
---|---|---|
/lint-source |
POST |
|
/status |
GET |
Obsoleto: verrà rimosso in una futura versione di axe DevTools Linter |
/healthcheck |
GET |
|
/billing/enterprise/:anno/:mese |
GET |
Valido solo con il server SaaS |
/fatturazione/utente/:anno/:mese |
GET |
Valido solo con il server SaaS |
/fatturazione/key/:anno/:mese |
GET |
Valido solo con il server SaaS |
Il punto finale di Lint (/lint-source
)
L'endpoint Lint è l'endpoint del servizio primario. Puoi utilizzarlo per inviare codice ad axe DevTools Linter per verificare eventuali problemi di accessibilità. Accetta richieste con un corpo JSON contenente il codice da controllare. POST
Richiesta
Per utilizzare questo endpoint, è necessario creare una richiesta all'endpoint lint del server, come mostrato nell'esempio seguente: POST
POST /lint-source
È necessario includere anche un'intestazione per indicare al server che il corpo della richiesta contiene un oggetto JSON. Content-Type
Content-Type: application/json
Se utilizzi axe DevTools Linter SaaS, dovrai includere un'intestazione con la tua chiave API, come mostrato di seguito: Authorization
Authorization: <YOUR API KEY>
Per ulteriori informazioni su come ottenere una chiave API, consulta Ottenere una chiave API SaaS di axe DevTools Linter.
Il corpo della richiesta dovrebbe contenere il codice (all'interno di un oggetto JSON) che si desidera controllare. Ad esempio, il seguente oggetto JSON controlla un campione di markdown:
{
"source": "# heading\n### Another heading\n",
"filename": "file.md"
}
L'esempio Markdown sopra riportato presenta un errore di accessibilità: i livelli di intestazione presentano uno spazio tra la prima intestazione (livello di intestazione 1) e la seconda intestazione (livello di intestazione 3). Per visualizzare la risposta del server a questo errore, vedere la sezione Risposta di seguito.
Oggetto richiesta JSON
La tabella seguente mostra le proprietà utilizzate con l'oggetto richiesta JSON:
Nome | Tipo | Descrizione |
---|---|---|
source |
corda | Il codice che vuoi controllare. È necessario neutralizzare le virgolette e le terminazioni di riga. |
filename |
corda | Il nome del file del codice. Il server utilizza l'estensione del nome del file per determinare il tipo di codice incluso in source e quindi quale linter utilizzare. |
config |
LinterConfig |
Un oggetto di configurazione facoltativo per configurare il linting. Per maggiori informazioni, vedere L'oggetto config . |
language |
corda | Una string facoltativa che indica il linter da utilizzare per controllare il codice. |
La stringa nell'oggetto JSON della richiesta è il codice che si desidera controllare. source
È necessario eseguire l'escape di tutte le virgolette e delle nuove righe (precedute da una barra rovesciata).
La stringa language
può assumere uno dei seguenti valori:
language | Descrizione |
---|---|
md |
Markdown |
jsx |
Estensione sintattica JavaScript (consente HTML mescolato con JavaScript) |
html |
HTML |
vue |
Vue.js |
tsx |
Estensione della sintassi TypeScript (come jsx ) |
angular |
Angular |
Il server utilizza le proprietà filename
e language
per determinare quale linter utilizzare. Solitamente, axe DevTools Linter utilizzerà l'estensione del file nella proprietà filename
per scegliere il linter. Se invece si desidera specificare il linter da utilizzare, è possibile utilizzare la proprietà language
e i valori specificati nella tabella sopra. In questo caso, è comunque necessario specificare un filename
come parametro obbligatorio, ma language
ha la precedenza sull'estensione del nome file. Ad esempio, se si specifica un filename
di "somefile.html" e un language
di md
, il server utilizzerà il linter Markdown.
Risposta
Il server risponde con un codice di risposta 200 indipendentemente dal fatto che vi siano o meno errori di accessibilità. È necessario esaminare il codice JSON nel corpo della risposta per verificare se sono presenti errori.
Se il codice non contiene errori, l'oggetto di risposta JSON è il seguente:
{
"report": {
"errors": []
}
}
L'esempio seguente mostra l'oggetto JSON di risposta per la sorgente che presenta un errore (nota che errors
è un array di error
oggetti).
{
"report": {
"errors": [
{
"ruleId": "heading-order",
"helpURL": "https://dequeuniversity.com/rules/axe/4.3/heading-order?application=axe-linter",
"description": "Ensures the order of headings is semantically correct",
"lineContent": "### Another heading",
"lineNumber": 2,
"linterType": "md",
"column": 1,
"endColumn": 20
}
]
}
}
L' error
oggetto
L' errors
array contiene error
oggetti che hanno le seguenti proprietà:
Nome | Tipo | Descrizione |
---|---|---|
ruleId |
corda | ID della regola di accessibilità violata da questo codice. |
helpURL |
corda | L'URL della pagina web che spiega l'errore. |
description |
corda | La descrizione dell'errore. |
lineContent |
corda | Il codice sorgente dell'errore. |
lineNumber |
Numero | Numero di riga nel codice sorgente dell'errore. |
linterType |
corda | Il linter utilizzato per trovare l'errore. Esistono diversi linter che vengono utilizzati per individuare problemi di accessibilità. |
column |
Numero | Colonna iniziale nella riga lineNumber con l'errore. |
endColumn |
Numero | Colonna finale nella riga lineNumber dell'errore. |
L' config
oggetto
Puoi specificare una proprietà se desideri un maggiore controllo sulle regole utilizzate da axe DevTools Linter per verificare la presenza di errori di accessibilità nel codice sorgente. config
{
"source": "<html></html>",
"filename": "file.html",
"config": {
"rules": {
"html-has-lang": false
},
"exclude": [],
"tags": []
}
}
L'esempio precedente mostra che, nonostante la sorgente abbia un errore di accessibilità (un attributo mancante sull' lang
elemento html
), non verranno restituiti errori perché la regola è stata disattivata.
L' global-components
oggetto
L'oggetto global-components
mappa i componenti personalizzati e i loro attributi agli elementi e agli attributi HTML esistenti. Per informazioni introduttive sul linting dei componenti personalizzati, vedere Linting dei componenti personalizzati.
L'esempio seguente mostra una mappatura completa dei componenti personalizzati:
{
"config": {
"global-components": {
"custom-component": {
"element": "html-element",
"attributes": [
{ "custom-attribute-1": "html-element-attribute-1" },
{ "custom-attribute-2": "<text>" },
"aria-*"
],
"replace": true
}
}
}
L'esempio mostra la mappatura dal componente personalizzato custom-component
a html-element
con attributi custom-attribute-1
mappati a html-element-attribute1
e custom-attribute-2
mappati a <text>
, che è un valore di attributo speciale che mappa custom-attribute-2
al contenuto di testo dell'elemento HTML di output. Per ulteriori informazioni, vedere Il valore speciale <testo>
.
Per maggiori informazioni consultare lo speciale aria-*
value indicates that all ARIA attributes on the custom element should be copied to the output HTML element. See Using aria-*
.
La proprietà replace
indica se custom-component
deve essere rimossa dall'albero DOM di output, che include elementi personalizzati di Angular e JavaScript. L'impostazione predefinita è la stessa della tecnologia utilizzata. Cioè true
per Angular e HTML, false
per JSX, TSX e Vue.
È possibile abbreviare le proprietà element
e attributes
rispettivamente come el
e attrs
, ma non è possibile utilizzare element
e el
insieme né attributes
e attrs
.
Se il componente personalizzato non richiede la mappatura degli attributi, puoi utilizzare questo formato abbreviato che mappa custom-component
a html-element
:
{
"config": {
"global-components": {
"custom-component": "html-element"
}
}
}
La rules
Proprietà
rules
La proprietà fa riferimento a LinterRuleset
un oggetto che consente di abilitare o disabilitare le regole in base al loro ID. Per ulteriori informazioni sulle regole di accessibilità, vedere axe DevTools Linter Accessibility Rules.
Ad esempio, la seguente configurazione abilita la regola image-alt
e disabilita la regola tabindex
:
{
"config": {
"rules": {
"image-alt": true,
"tabindex": false
}
}
}
Per un elenco delle regole che il server controlla, vedere axe DevTools Linter Accessibility Rules
La exclude
Proprietà
La proprietà exclude
può essere utilizzata per indicare ad axe DevTools Linter di saltare determinati file durante il linting. Per ulteriori informazioni, vedere File di configurazione nella documentazione di axe DevTools Linter Connector.
La tags
Proprietà
La tags
proprietà è un array di stringhe o tag. Ogni tag è associato a una o più regole di accessibilità, quindi specificando più tag qui è possibile abilitare molte regole di accessibilità diverse (e disabilitare tutte le regole che non sono contrassegnate con i tag specificati). In genere i tag corrispondono a diversi standard di accessibilità e ogni regola può essere membro di molti tag diversi.
Se si specifica più di un tag, vengono abilitate tutte le regole in tutti i tag anziché solo quelle che appartengono a tutti i tag. In altre parole, si tratta di un'unione di regole piuttosto che di un'intersezione di regole.
L'endpoint di stato (/status
)
L'endpoint /status
è obsoleto e non dovrebbe più essere utilizzato. Utilizzare il /healthcheck
endpoint invece.
L'endpoint di controllo dello stato di salute (/healthcheck
)
Per verificare se il server è in esecuzione e restituire il suo numero di versione, inviare una richiesta all'endpoint di controllo dello stato di salute. GET
Di seguito è riportato un esempio di richiesta:
GET /healthcheck
Se il server è in esecuzione, risponderà con il numero di versione del server, come mostrato nell'esempio seguente:
{
"version": "4.10.3"
}
endpoint di fatturazione aziendale (/billing/enterprise
)
L'endpoint è destinato all'uso solo con il prodotto SaaS axe DevTools Linter.
L'endpoint di fatturazione aziendale consente di ottenere informazioni sull'utilizzo totale della propria azienda e sull'utilizzo suddiviso in singole chiavi API. L'endpoint risponde a una richiesta e richiede di specificare anno e mese (in questo caso maggio 2022), come mostrato di seguito: GET
GET https://axe-linter.deque.com/billing/enterprise/2022/4
authorization: <YOUR-API-KEY>
L'oggetto JavaScript Date
utilizza i mesi che vanno da 0 a 11, dove 0 indica gennaio e 11 indica dicembre. Tuttavia, il valore nella risposta del server varia da 1 a 12, con 1 per gennaio e 12 per dicembre. month
La richiesta richiede un'intestazione con la tua chiave API. authorization
Per ulteriori informazioni, vedere Ottenere una chiave API .
Per impostazione predefinita, il server restituisce un mese di dati, ma è possibile utilizzare la stringa di query facoltativa months=<number-of-months-data>
per specificarne di più. Il parametro può variare da 1 a 12 (incluso). months
L'esempio seguente mostra come ottenere tre mesi di dati a partire da maggio 2022:
GET https://axe-linter.deque.com/billing/enterprise/2022/4?months=3
authorization: <YOUR-API-KEY>
Risposta
Il server linter SaaS risponde con un oggetto JSON che contiene due oggetti. Il primo è un summary
oggetto, mentre il secondo, api_keys
, è una raccolta di oggetti che contengono informazioni sull'utilizzo del servizio linter da parte di ciascuna chiave API.
Di seguito è riportato un esempio di oggetto risposta:
{
"summary": {
"year": 2022,
"month": 5,
"total_lines_linted": 500,
"total_scans": 40
},
"api_keys": [{
"id": "a2fd58d0-4810-4fbb-b928-7befa01bf89c",
"name": "My Project",
"keycloak_id": "d117bb33-1308-41b0-8960-06301eefb169",
"user_email": "someone@example.com",
"total_lines_linted": 500,
"total_scans": 40
}]
}
Se non sono presenti dati per il periodo di tempo specificato, la risposta sarà simile a questa:
{
"summary": {
"year": 2022,
"month": 5
},
"api_keys": []
}
L' summary
oggetto
L' summary
oggetto fornisce informazioni sul numero totale di linee sottoposte a linting e sul numero di scansioni avviate dagli utenti all'interno dell'azienda.
Nome | Tipo | Descrizione |
---|---|---|
year |
Numero | L'anno di inizio dei risultati |
month |
Numero | Il mese di inizio (1-12) dei risultati |
total_lines_linted |
Numero | Totale delle righe inviate al servizio linter dall'azienda |
total_scans |
Numero | Numero totale di scansioni eseguite dall'azienda |
La matrice api_keys
La matrice contiene oggetti composti dalle seguenti proprietà: api_keys
Nome | Tipo | Descrizione |
---|---|---|
id |
corda | Un UUID che identifica l'utente |
name |
corda | Il nome dato alla chiave API quando è stata creata |
keycloak_id |
corda | ID Keycloak dell'utente(https://www.keycloak.org) |
user_email |
corda | L'indirizzo email dell'utente |
total_lines_linted |
Numero | Totale linee inviate al servizio linter |
total_scans |
Numero | Numero totale di scansioni avviate da questo utente |
Endpoint di fatturazione Utente (/billing/user
)
L'endpoint è destinato all'uso solo con il prodotto SaaS axe DevTools Linter.
Questo endpoint, l'endpoint di fatturazione dell'utilizzo, consente di ottenere informazioni di fatturazione per un utente per tutte le chiavi API utilizzate per accedere al server SaaS. L'impostazione predefinita è che vengano restituiti i dati di un mese.
L'esempio seguente mostra una richiesta per maggio 2022 per l'utente rappresentato dalla chiave API fornita (nell'intestazione authorization
):
GET https://axe-linter.deque.com/billing/user/2022/4
authorization: <YOUR-API-KEY>
L'oggetto JavaScript Date
utilizza i mesi che vanno da 0 a 11, dove 0 indica gennaio e 11 indica dicembre. Tuttavia, il valore nella risposta del server varia da 1 a 12, con 1 per gennaio e 12 per dicembre. month
Come per gli altri endpoint di fatturazione, è possibile specificare una stringa di query facoltativa come mostrato di seguito: months
GET https://axe-linter.deque.com/billing/user/2022/4?months=2
authorization: <YOUR-API-KEY>
Di seguito è riportato un esempio di oggetto risposta:
{
"summary": {
"year": 2022,
"month": 5,
"total_lines_linted": 500,
"total_scans": 40
},
"api_keys": [{
"id": "a2fd58d0-4810-4fbb-b928-7befa01bf89c",
"name": "My Project",
"keycloak_id": "d117bb33-1308-41b0-8960-06301eefb169",
"user_email": "someone@example.com",
"total_lines_linted": 500,
"total_scans": 40
}]
}
Se l'utente non ha effettuato alcun utilizzo per il periodo di tempo specificato, riceveresti questa risposta:
{
"summary": {
"year": 2022,
"month": 5
},
"api_keys": []
}
L'oggetto risposta contiene due oggetti, summary
e api_keys
appartenenti all'utente. Per ulteriori informazioni, vedere L'oggetto summary
e L'array api_keys
sopra.
Endpoint di fatturazione della chiave API (/billing/key
)
L'endpoint è destinato all'uso solo con il prodotto SaaS axe DevTools Linter.
Per ottenere i dati di utilizzo di una chiave API, è possibile utilizzare l'endpoint di fatturazione della chiave API. È necessario specificare l'anno e il mese come mostrato di seguito:
GET https://axe-linter.deque.com/billing/key/2022/4
authorization: <YOUR-API-KEY>
L'oggetto JavaScript Date
utilizza i mesi che vanno da 0 a 11, dove 0 indica gennaio e 11 indica dicembre. Tuttavia, il valore nella risposta del server varia da 1 a 12, con 1 per gennaio e 12 per dicembre. month
Come per gli altri endpoint di fatturazione, è possibile specificare una stringa di query facoltativa come mostrato di seguito: months
GET https://axe-linter.deque.com/billing/key/2022/4?months=2
authorization: <YOUR-API-KEY>
Di seguito è riportato un esempio di oggetto risposta:
{
"name": "My Project",
"total_lines_linted": 1000,
"total_scans": 200
}
Se non sono state eseguite operazioni di lint di linee durante il periodo di tempo specificato utilizzando la chiave API specificata nell'intestazione, si riceverà una risposta come la seguente: Authorization
{
"name": "My Project",
"total_lines_linted": 0,
"total_scans": 0
}
Il valore name
è il nome assegnato alla chiave API al momento della sua creazione. Gli altri valori, total_lines_linted
e total_scans
, specificano il numero di linee sottoposte a linting nel periodo di tempo specificato e il numero totale di scansioni avviate da questa chiave API nel periodo di tempo specificato.
URL Riferimento rapido
Gli URL importanti da utilizzare con axe DevTools Linter SaaS sono i seguenti:
URL | Descrizione |
---|---|
https://axe-linter.deque.com | Il server SaaS axe DevTools Linter accessibile al pubblico. Richiede una chiave API per l'utilizzo. |
https://axe.deque.com/settings | URL dell'app Web per ottenere le chiavi API di autenticazione SaaS di axe DevTools Linter. |
Per ulteriori informazioni sui passaggi necessari per ottenere una chiave API, vedere Ottenimento di una chiave API SaaS axe DevTools Linter .