Referenz zum Axe DevTools Linter REST-API
Referenzhandbuch zu den REST-Endpunkten des Axe DevTools Linter
Mit Axe DevTools Linter können Sie Code auf Barrierefreiheitsprobleme überprüfen, indem Sie eine REST-API verwenden. Sie erstellen ein HTTP-Anfrageobjekt, das die zu prüfenden Quellzeilen enthält (im Body der Anfrage als JSON-Objekt), und der Server gibt ein Antwort-JSON-Objekt zurück, das auf mögliche Barrierefreiheitsprobleme hinweist, die der Server findet.
Der Server kann React (.js, .jsx, .ts und .tsx), Vue (.vue), Angular (.component.html), HTML (.html, .htm und .xhtml), LiquidJS (.liquid), HTL (.htl) und Markdown (.md und .markdown) Dateien überprüfen.
Die REST-Endpunkte
Der Server bietet sechs REST-Endpunkte. Der erste Endpunkt, (/lint-source), antwortet auf POST-Anfragen und prüft Ihren Code auf Barrierefreiheitsprobleme. Der zweite Endpunkt, (/status), antwortet auf GET-Anfragen und zeigt, ob der Server verfügbar ist, indem er mit einem 200-Statuscode anzeigt, dass der Server zuhört. Der dritte Endpunkt, (/healthcheck), antwortet auf GET-Anfragen, gibt an, ob der Server läuft, und liefert die Versionsnummer des laufenden Servers. Die verbleibenden drei Endpunkte ermöglichen es SaaS-Benutzern, Nutzungsinformationen für ihr gesamtes Unternehmen (/billing/enterprise), ihre Benutzer (/billing/user) und ihre API-Schlüssel (/billing/key) zu erhalten.
Die REST-Endpunkte sind wie folgt:
| Endpunkt | Anfragetyp | Hinweise |
|---|---|---|
/lint-source |
POST |
|
/status |
GET |
Veraltet: Wird in einer zukünftigen Version von Axe DevTools Linter entfernt |
/healthcheck |
GET |
|
/billing/enterprise/:year/:month |
GET |
Nur gültig mit dem SaaS-Server |
/billing/user/:year/:month |
GET |
Nur gültig mit dem SaaS-Server |
/billing/key/:year/:month |
GET |
Nur gültig mit dem SaaS-Server |
Der Lint-Endpunkt (/lint-source)
Der Lint-Endpunkt ist der primäre Serviceendpunkt. Sie können ihn verwenden, um Code an den Axe DevTools Linter zu senden, um auf Barrierefreiheitsprobleme zu prüfen. Er akzeptiert POST-Anfragen mit einem JSON-Body, der den zu prüfenden Code enthält.
Anfrage
Um diesen Endpunkt zu verwenden, erstellen Sie eine POST-Anfrage an den Lint-Endpunkt des Servers, wie im folgenden Beispiel gezeigt:
POST /lint-sourceSie müssen auch einen Content-Type-Header hinzufügen, um dem Server mitzuteilen, dass der Body der Anfrage ein JSON-Objekt enthält.
Content-Type: application/jsonWenn Sie Axe DevTools Linter SaaS verwenden, müssen Sie einen Authorization-Header mit Ihrem API-Schlüssel einschließen, wie unten gezeigt:
Authorization: <YOUR API KEY>Weitere Informationen zum Erhalt eines API-Schlüssels finden Sie in Einen Axe DevTools Linter SaaS API-Schlüssel erhalten.
Der Body der Anfrage sollte den Code (in einem JSON-Objekt) enthalten, den Sie überprüfen möchten. Zum Beispiel wird mit dem folgenden JSON-Objekt ein Markdown-Beispiel geprüft:
{
"source": "# heading\n### Another heading\n",
"filename": "file.md"
}Das obige Markdown-Beispiel enthält einen Barrierefreiheitsfehler: Die Überschriftsebenen haben eine Lücke zwischen der ersten Überschrift (Überschriftsebene 1) und der zweiten Überschrift (Überschriftsebene 3). Um die Serverantwort auf diesen Fehler zu sehen, lesen Sie den Abschnitt Antwort unten.
Das JSON-Anfrageobjekt
Die folgende Tabelle zeigt die Eigenschaften, die mit dem JSON-Anfrageobjekt verwendet werden:
| Name | Typ | Beschreibung |
|---|---|---|
source |
string | Der Code, den Sie überprüfen lassen möchten. Sie müssen Anführungszeichen und Zeilenenden escapen. |
filename |
string | Der Dateiname des Codes. Der Server verwendet die Erweiterung des Dateinamens, um den Typ des in source enthaltenen Codes zu bestimmen und somit zu entscheiden, welchen Linter er verwenden soll. |
config |
LinterConfig |
Ein optionales Konfigurationsobjekt zur Konfiguration der Lintprüfung. Weitere Informationen finden Sie unter Das config-Objekt. |
language |
string | Ein optionaler String, der den Linter angibt, der zur Prüfung des Codes verwendet werden soll. |
properties |
string array | Ein optionales Array zusätzlicher Eigenschaften, die in jedem error-Objekt der Antwort enthalten sein sollen. Derzeit wird nur der Wert "customName" unterstützt. Weitere Informationen finden Sie unter customName in der Beschreibung des error-Objekts. |
Der source-String im JSON-Anfrageobjekt ist der Code, den Sie überprüfen lassen möchten. Sie müssen alle Anführungszeichen und Zeilenumbrüche escapen (durch Voranstellen eines Backslashes).
Der language-String kann einen der folgenden Werte annehmen:
| Sprache | Beschreibung |
|---|---|
md |
Markdown |
jsx |
JavaScript-Syntaxerweiterung (ermöglicht HTML gemischt mit JavaScript) |
html |
HTML |
vue |
Vue.js |
tsx |
TypeScript-Syntaxerweiterung (wie jsx) |
angular |
Angular |
htl |
HTL (Adobe Experience Manager) |
Der Server verwendet die Eigenschaften filename und language, um herauszufinden, welcher Linter verwendet werden soll. Normalerweise verwendet Axe DevTools Linter die Dateierweiterung der Eigenschaft filename, um den Linter auszuwählen. Wenn Sie den zu verwendenden Linter stattdessen angeben möchten, können Sie die Eigenschaft language und die in der Tabelle oben angegebenen Werte verwenden. In diesem Fall müssen Sie trotzdem eine filename als erforderlichen Parameter angeben, aber language hat Vorrang vor der Dateierweiterung. Wenn Sie beispielsweise eine filename von „somefile.html“ und eine language von md angeben, wird der Markdown-Linter verwendet.
Antwort
Der Server antwortet mit einem Antwortcode von 200, unabhängig davon, ob Barrierefreiheitsfehler vorliegen oder nicht. Sie müssen das JSON im Antwortkörper prüfen, um festzustellen, ob Fehler vorliegen.
Wenn der Code keine Fehler aufweist, sieht das JSON-Antwortobjekt wie folgt aus:
{
"report": {
"errors": []
}
}Das folgende Beispiel zeigt das JSON-Antwortobjekt für eine Quelle, die einen Fehler hat (beachten Sie, dass errors ein Array von error-Objekten ist).
{
"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
}
]
}
}Das error-Objekt
Das errors-Array enthält error-Objekte, die die folgenden Eigenschaften aufweisen:
| Name | Typ | Beschreibung |
|---|---|---|
ruleId |
string | Die Regel-ID der Barrierefreiheitsregel, die durch diesen Code verletzt wurde. |
helpURL |
string | Die Webseit-URL, die den Fehler erklärt. |
description |
string | Die Beschreibung des Fehlers. |
lineContent |
string | Der Quellcode des Fehlers. |
lineNumber |
number | Zeilennummer im Quelltext des Fehlers. |
linterType |
string | Der Linter, der verwendet wurde, um den Fehler zu finden. Es gibt verschiedene Linter, die verwendet werden, um Barrierefreiheitsprobleme zu finden. |
column |
number | Startspalte in Zeile lineNumber mit dem Fehler. |
endColumn |
number | Endspalte in Zeile lineNumber des Fehlers. |
customName |
string | Der Tag-Name des benutzerdefinierte Zuordnungskomponente, der den Verstoß ausgelöst hat. Nur vorhanden, wenn "customName" im properties-Array der Anfrage enthalten ist und der Verstoß von einer benutzerdefinierten Zuordnungskomponente stammt. Siehe Analyse von Verstößen bei benutzerdefinierten Komponenten für ein Beispiel dieser Eigenschaft im Antwortobjekt. |
Das config-Objekt
Sie können eine config-Eigenschaft angeben, wenn Sie mehr Kontrolle über die Regeln haben möchten, die Axe DevTools Linter verwendet, um Ihren Quelltext auf Barrierefreiheitsfehler zu prüfen.
{
"source": "<html></html>",
"filename": "file.html",
"config": {
"rules": {
"html-has-lang": false
},
"exclude": [],
"tags": []
}
}Das vorherige Beispiel zeigt, dass, obwohl der Quelltext einen Barrierefreiheitsfehler hat (ein fehlendes lang-Attribut im html-Element), keine Fehler zurückgegeben werden, weil diese Regel deaktiviert wurde.
Das global-components-Objekt
Das global-components-Objekt ordnet benutzerdefinierte Komponenten und deren Attribute bestehenden HTML-Elementen und Attributen zu. Für einführende Informationen zum Linting benutzerdefinierter Komponenten, siehe Linting benutzerdefinierter Komponenten.
Das folgende Beispiel zeigt eine vollständige Zuordnung einer benutzerdefinierten Komponente:
{
"config": {
"global-components": {
"custom-component": {
"element": "html-element",
"attributes": [
{ "custom-attribute-1": "html-element-attribute-1" },
{ "custom-attribute-2": "<text>" },
"aria-*"
],
"replace": true
}
}
}Das Beispiel zeigt die Zuordnung von der benutzerdefinierten Komponente custom-component zu html-element mit den Attributen custom-attribute-1 zu html-element-attribute1 und custom-attribute-2 zu <text>, was ein spezieller Attributwert ist, der custom-attribute-2 dem Textinhalt des Ausgabe-HTML-Elements zuordnet. Für weitere Informationen, siehe Der spezielle <text>-Wert.
Der spezielle aria-*-Wert gibt an, dass alle ARIA-Attribute auf dem benutzerdefinierten Element auf das Ausgabe-HTML-Element kopiert werden sollen. Siehe Verwendung von aria-* für weitere Informationen.
Die replace-Eigenschaft gibt an, ob custom-component aus dem Ausgabe-DOM-Baum entfernt werden soll, was Angular- und JavaScript-Benutzerelemente einschließen. Der Standardwert ist derselbe wie der Standard für die verwendete Technologie. D. h. true für Angular und HTML, false für JSX, TSX und Vue.
Sie können die Eigenschaften element und attributes als el bzw. attrs abkürzen, jedoch nicht element und el zusammen oder attributes und attrs verwenden.
Wenn die benutzerdefinierte Komponente keine Attributzuordnung benötigt, können Sie dieses abgekürzte Format verwenden, das custom-component zu html-element zuordnet:
{
"config": {
"global-components": {
"custom-component": "html-element"
}
}
}Die rules-Eigenschaft
Die rules-Eigenschaft bezieht sich auf ein LinterRuleset-Objekt, das es Ihnen ermöglicht, Regeln durch ihre Regel-ID zu aktivieren oder zu deaktivieren. Für weitere Informationen über die Barrierefreiheitsregeln, siehe Axe DevTools Linter Barrierefreiheitsregeln.
Zum Beispiel aktiviert die folgende Konfiguration die image-alt-Regel und deaktiviert die tabindex-Regel:
{
"config": {
"rules": {
"image-alt": true,
"tabindex": false
}
}
}Für eine Liste von Regeln, gegen die der Server prüft, siehe Axe DevTools Linter-Barrierefreiheitsregeln
Die exclude-Eigenschaft
Die exclude-Eigenschaft kann verwendet werden, um Axe Linter anzuweisen, bestimmte Dateien beim Linting zu überspringen. Siehe Konfigurationsdatei in der Dokumentation für Axe DevTools Linter Connector für weitere Informationen.
Die tags-Eigenschaft
Die tags-Eigenschaft ist ein Array von Strings oder Tags. Jedes Tag ist an eine oder mehrere Barrierefreiheitsregeln gekoppelt, sodass durch die Angabe mehrerer Tags hier viele verschiedene Barrierefreiheitsregeln aktiviert werden können (und alle Regeln deaktiviert werden, die nicht mit den angegebenen Tags versehen sind). Die Tags entsprechen typischerweise verschiedenen Barrierefreiheitsstandards, und jede Regel kann Mitglied vieler verschiedener Tags sein.
Wenn Sie mehr als ein Tag angeben, werden alle Regeln in allen Tags aktiviert, anstatt nur diejenigen, die zu allen Tags gehören. Mit anderen Worten, es ist eine Vereinigung von Regeln und kein Schnittpunkt von Regeln.
Der Status-Endpunkt (/status)
Der /status-Endpunkt ist veraltet und sollte nicht mehr verwendet werden. Verwenden Sie stattdessen den /healthcheck-Endpunkt.
Der Health-Check-Endpunkt (/healthcheck)
Um zu prüfen, ob der Server läuft, und um seine Versionsnummer zurückzugeben, senden Sie eine GET-Anfrage an den Health-Check-Endpunkt. Ein Beispiel einer Anfrage wird unten gezeigt:
GET /healthcheckWenn der Server läuft, antwortet er mit der Versionsnummer des Servers, wie im unten gezeigten Beispiel:
{
"version": "4.10.3"
}Der Enterprise-Billing-Endpunkt (/billing/enterprise)
Der Endpunkt wird für Axe DevTools Linter SaaS und Private-Cloud-Produkte unterstützt. Für Private-Cloud-Implementierungen ersetzen Sie die SaaS-Server-URLs in den Beispielen durch Ihre Private-Cloud-Server-URLs.
Der Enterprise-Billing-Endpunkt ermöglicht es Ihnen, Gesamtverwendungsinformationen für Ihr Unternehmen zu erhalten sowie die Nutzung aufgeschlüsselt nach einzelnen API-Schlüsseln. Der Endpunkt antwortet auf eine GET-Anfrage und erfordert, dass Sie ein Jahr und einen Monat angeben (hier Mai 2022), wie unten gezeigt:
GET https://axe-linter.deque.com/billing/enterprise/2022/4
authorization: <YOUR-API-KEY>Das JavaScript-Date-Objekt verwendet Monate im Bereich von 0 bis 11, wobei 0 für Januar und 11 für Dezember steht. Allerdings reicht der month-Wert in der Serverantwort von 1 bis 12, wobei 1 für Januar und 12 für Dezember steht.
Die Anfrage erfordert einen authorization-Header mit Ihrem API-Schlüssel. Siehe Einen API-Schlüssel erhalten für weitere Informationen.
Standardmäßig gibt der Server einen Monat an Daten zurück, aber Sie können den optionalen months=<number-of-months-data>-Abfrageparameter verwenden, um mehr anzugeben. Der months-Parameter kann im Bereich von 1 bis 12 (inklusive) liegen. Das unten gezeigte Beispiel zeigt, wie man drei Monate an Daten erhält, beginnend mit Mai 2022:
GET https://axe-linter.deque.com/billing/enterprise/2022/4?months=3
authorization: <YOUR-API-KEY>Antwort
Der SaaS-Linter-Server antwortet mit einem JSON-Objekt, das zwei Objekte enthält. Das erste ist ein summary-Objekt, und das zweite, api_keys, ist eine Sammlung von Objekten, die Informationen über die Nutzung des Linter-Dienstes durch jeden API-Schlüssel enthalten.
Ein Beispiel für ein Antwortobjekt wird unten gezeigt:
{
"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
}]
}Wenn es keine Daten für den angegebenen Zeitraum gibt, sieht die Antwort wie folgt aus:
{
"summary": {
"year": 2022,
"month": 5
},
"api_keys": []
}Das summary-Objekt
Das summary-Objekt gibt Ihnen Informationen über die Gesamtanzahl der gelinteten Zeilen und wie viele Scans von Benutzern innerhalb des Unternehmens initiiert wurden.
| Name | Typ | Beschreibung |
|---|---|---|
year |
Zahl | Das Startjahr der Ergebnisse |
month |
Zahl | Der Startmonat (1-12) der Ergebnisse |
total_lines_linted |
Zahl | Gesamtzeilen, die vom Unternehmen an den Linter-Dienst gesendet wurden |
total_scans |
Zahl | Gesamtanzahl der vom Unternehmen durchgeführten Scans |
Das api_keys-Array
Das api_keys-Array enthält Objekte, die aus den folgenden Eigenschaften bestehen:
| Name | Typ | Beschreibung |
|---|---|---|
id |
Zeichenkette | Eine UUID, die den Benutzer identifiziert |
name |
Zeichenkette | Der Name, der dem API-Schlüssel bei seiner Erstellung gegeben wurde |
keycloak_id |
Zeichenkette | Die Keycloak-ID des Benutzers |
user_email |
Zeichenkette | E-Mail-Adresse des Benutzers |
total_lines_linted |
Zahl | Gesamtzahl der Zeilen, die an den Linter-Dienst gesendet wurden |
total_scans |
Zahl | Gesamtzahl der Scans, die dieser Benutzer initiiert hat |
Die Benutzerabrechnungs-Schnittstelle (/billing/user)
Die Schnittstelle wird für Axe DevTools Linter SaaS und Private-Cloud-Produkte unterstützt. Für Private-Cloud-Bereitstellungen ersetzen Sie die SaaS-Server-URLs in den Beispielen durch Ihre Private-Cloud-Server-URLs.
Diese Schnittstelle, die Nutzungsabrechnungs-Schnittstelle, ermöglicht es Ihnen, Abrechnungsinformationen für einen Benutzer für alle API-Schlüssel zu erhalten, die zum Zugriff auf den SaaS-Server verwendet wurden. Standardmäßig werden die Daten eines Monats zurückgegeben.
Das folgende Beispiel zeigt eine Anfrage für Mai 2022 für den Benutzer, der durch den bereitgestellten API-Schlüssel (im authorization Header) dargestellt wird:
GET https://axe-linter.deque.com/billing/user/2022/4
authorization: <YOUR-API-KEY>Das JavaScript-Date-Objekt verwendet Monate im Bereich von 0 bis 11, wobei 0 für Januar und 11 für Dezember steht. Im Gegensatz dazu reicht der month-Wert in der Serverantwort von 1 bis 12, wobei 1 für Januar und 12 für Dezember steht.
Wie bei den anderen Abrechnungs-Schnittstellen können Sie eine optionale months-Abfragezeichenfolge wie unten gezeigt angeben:
GET https://axe-linter.deque.com/billing/user/2022/4?months=2
authorization: <YOUR-API-KEY>Das folgende Beispiel zeigt ein Antwortobjekt:
{
"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
}]
}Wenn der Benutzer für den angegebenen Zeitraum keine Nutzung hatte, würden Sie diese Antwort erhalten:
{
"summary": {
"year": 2022,
"month": 5
},
"api_keys": []
}Das Antwortobjekt enthält zwei Objekte, summary und api_keys, die zum Benutzer gehören. Für weitere Informationen siehe Das summary-Objekt und Das api_keys-Array oben.
Die API-Schlüsselabrechnungs-Schnittstelle (/billing/key)
Die Schnittstelle wird für Axe DevTools Linter SaaS und Private-Cloud-Installationen unterstützt. Für Private-Cloud-Installationen ersetzen Sie die Server-URLs (https://axe-linter.deque.com) in den untenstehenden Beispielen durch Ihre Private-Cloud-Server-URLs.
Um Nutzungsdaten für einen API-Schlüssel zu erhalten, können Sie die API-Schlüsselabrechnungs-Schnittstelle verwenden. Sie müssen das Jahr und den Monat wie unten gezeigt angeben:
GET https://axe-linter.deque.com/billing/key/2022/4
authorization: <YOUR-API-KEY>Das JavaScript-Date-Objekt verwendet Monate im Bereich von 0 bis 11, wobei 0 für Januar und 11 für Dezember steht. Im Gegensatz dazu reicht der month-Wert in der Serverantwort von 1 bis 12, wobei 1 für Januar und 12 für Dezember steht.
Wie bei den anderen Abrechnungs-Schnittstellen können Sie eine optionale months-Abfragezeichenfolge wie unten gezeigt angeben:
GET https://axe-linter.deque.com/billing/key/2022/4?months=2
authorization: <YOUR-API-KEY>Unten wird ein Beispiel-Antwortobjekt angezeigt:
{
"name": "My Project",
"total_lines_linted": 1000,
"total_scans": 200
}Wenn während des angegebenen Zeitraums keine Zeilen unter Verwendung des im Authorization Header angegebenen API-Schlüssels geprüft wurden, würden Sie eine Antwort wie die folgende erhalten:
{
"name": "My Project",
"total_lines_linted": 0,
"total_scans": 0
}Der name-Wert ist der Name, der dem API-Schlüssel bei der Erstellung zugewiesen wurde. Die anderen Werte, total_lines_linted und total_scans, geben die Anzahl der Zeilen an, die im angegebenen Zeitraum geprüft wurden, und die Gesamtzahl der Scans, die mit diesem API-Schlüssel im angegebenen Zeitraum initiiert wurden.
Schnellreferenz für URLs
Wichtige URLs für die Verwendung mit Axe DevTools Linter SaaS sind wie folgt:
| URL | Beschreibung |
|---|---|
| https://axe-linter.deque.com | Der öffentlich zugängliche Axe DevTools Linter SaaS-Server. Erfordert einen API-Schlüssel zur Nutzung. |
| https://axe.deque.com/settings | Die URL für die Web-App zum Erhalten von Axe DevTools Linter SaaS-Authentifizierungs-API-Schlüsseln. |
Weitere Informationen zu den Schritten zum Erhalt eines API-Schlüssels finden Sie unter Erhalt eines Axe DevTools Linter SaaS-API-Schlüssels.
