Beskrivning:
RAP-LP är ett kommandoradsverktyg för att linta OpenAPI v3-definitioner med hjälp av Spectral.
Verktyget är specifikt utvecklat för att linta OpenAPI-definitioner enligt den svenska REST API-profilens specifikation REST API-profil.
Förutsätter att det finns en openapi.yaml att validera i den aktuella katalogen och beroende på hur man önskar att nyttja verktyget måste det finns installerade versioner av Node.js,npm, Podman eller Docker.
Notera: Att GitHub Packages (npm) kräver authentisering.
Konfigurera.npmrcmot rätt registry och scope, antingen globalt eller lokalt för enskilda projekt -@diggsweden:registry=https://npm.pkg.github.com
Om du saknar inloggning med GitHub Personal access token (PAT), se FAQ.
Notera: Att
<version>byts ut mot önskad version av verktyget, oftast senaste release tag. För mer information se versioner.
npm i -g @diggsweden/rest-api-profil-lint-processor@<version>
raplp -f openapi.yamlNotera: Att en omstart av terminal kan behövas för att
raplpska kunna användas som kommando.
Installera och lägg som devDependencies:
npm i --save-dev @diggsweden/rest-api-profil-lint-processor@<version>
Lägg till ett npm run script i din package.json med rätt sökväg till filen du vill validera:
{
"scripts": {
"lint-processor": "raplp -f openapi.yaml"
}
}Nu kan du använda npm run lint-processor.
Kör utan installation och package.json:
npx @diggsweden/rest-api-profil-lint-processor@<version> -f openapi.yamlNotera: Att npx laddar ned paketet till en tillfällig cache-mapp om det inte redan finns en version i node_modules/.bin
Kör med podman:
podman run --rm -v $(pwd):/data ghcr.io/diggsweden/rest-api-profil-lint-processor:<version> -f /data/openapi.yamlKör med docker:
docker run --rm -v $(pwd):/data ghcr.io/diggsweden/rest-api-profil-lint-processor:<version> -f /data/openapi.yamlNotera: Sökvägar kan hanteras olika beroende på miljö:
- Podman (Linux/macOS/WSL): -v $(pwd):/app/example
- Docker (PowerShell): -v "${PWD}:/app/example"
- Docker (CMD): -v %cd%:/app/example
- Starta en podman/docker container:
podman run --rm -it --entrypoint /bin/sh -v $(pwd):/app/data ghcr.io/diggsweden/rest-api-profil-lint-processor:<version>
- Kör din validering ifrån containern:
npm start -- -f /data/openapi.yaml
Notera: Att det kan uppstå problem vid körningar med podman och docker i kombination med flaggor som sparar information till filer. Användarens skrivrättigheter kan göra att filer inte dyker upp som önskat. Filerna kan finnas i containern men dyker inte i den mountade katalogen som specificerats. Se FAQ för mer information.
- Klona ned projektet, gärna från senaste release tag.
- Installera alla beroenden:
npm install
npm start -- -f openapi.yamlNotera: Att alla kommandon lokalt körs med
npm start --.
Main-branchen, feature-brancher, pre-release- och testversioner används med reservation för att de kan innehålla funktionalitet som inte är garanterad att den är testad på samma sätt som en stabil version.
Stabila versioner
Release ska alltid vara stabil och testad, vilket gör den till den föredragna versionen för att nyttja verktyget.
Dessa versioner är taggade med vX.X.X utan något suffix.
Pre-release- och testversioner
Pre-release-versioner är taggade med följande suffix:
- alpha → tidig testversion, ofta instabil
- beta → mer testad, men fortfarande pre-release
- rc → nära färdigställande, stabil release candidate
Rena testversioner är taggade med vX.X.X-dev följt av namnet på den branchen.
Dessa versioner är byggda för att testa funktionalitet som är under utveckling.
Alla versioner av verktyget hittar du här:
Här beskrivs vilka användningsområden verktyget har med diverse flaggor som kan sättas för att nyttja verktygets funktionalitet.
| Flagga | Beskrivning | Typ | Standard | Obligatorisk |
|---|---|---|---|---|
-f, --file |
Sökväg till OpenAPI-specifikation (YAML/JSON). | string | – | Ja |
-c, --categories |
Regelkategorier separerade med kommatecken. Tillgängliga: UfnRules, SakRules, VerRules, FnsRules, ArqRules, DokRules, AmeRules, ForRules, DotRules, FelRules, MogRules. |
string | – | Nej |
-l, --logError |
Sökväg till fil för felloggning från RAP-LP. Om inte angiven skrivs loggen till stdout. | string | stdout (om ej satt) | Nej |
-a, --append |
Append—utökar loggen i befintlig felloggningsfil (om --logError används). |
boolean | false |
Nej |
-d, --logDiagnostic |
Sökväg till fil för diagnostiseringsinformation från RAP-LP i JSON-format. | string | – | Nej |
--dex |
Sökväg till fil för diagnostiseringsinformation från RAP-LP i Excel-format. | string | – | Nej |
Notera: Att
raplpi alla kommandon nedan ersätts med respektive miljös sätt att köra verktyget (npm, docker eller podman).
För att validera en openapi-definition med verktyget, lägg till -f <YAML_FILE>
raplp -f openapi.yamlFör att validera mot en specifik kategori av regler, lägg till -c <CategoryName>.
Notera: Att du kan lägga till flera regler som en kommaseparerad lista.
# Validera mot en specifik regel
raplp -f openapi.yaml -c DokRules
# Validera mot flera regler
raplp -f openapi.yaml -c DokRules,AmeRules,SakRules- AmeRules
- ArqRules
- DokRules
- DotRules
- FelRules
- FnsRules
- ForRules
- MogRules
- ResRules
- SakRules
- UfnRules
- VerRules
För att skriva felmeddelanden till en valfri loggfil, lägg till -l <FILE>
raplp -f openapi.yaml -l raplp.logNotera: Att varje körning skriver över den tidigare loggfilen.
För att lägga till loggning i samma fil, lägg till -a
raplp -f openapi.yaml -l raplp.log -aFör att spara loggdiagnostik i en fil, lägg till -d <FILE>
raplp -f openapi.yaml -d logDiagnostic.logFör att spara information om regelutfall från diagnostiseringen till en avstämningsfil i Excel, lägg till --dex.
Om en specifik sökväg till avstämningsfilen ska anges, kan denna läggas till.
Om ingen sökväg anges, genererar verktyget automatiskt en ny avstämningsfil i den katalog där det körs.
Avstämningsfilen i Excel har ett fast format, om en egen version av filen ska användas måste den utpekade resursen hämtas med en kompatibel version av REST API-profilen.
Exempel utan sökväg till avstämningsfil i Excel
raplp -f openapi.yaml --dexExempel med sökväg till avstämningsfil i Excel
raplp -f openapi.yaml --dex <PATH>För att visa aktuell version av verktyget, lägg till --version
raplp --versionraplp --helpVill du veta mer om de specifika reglerna som verktyget tillämpar, se avsnittet GUIDELINES för detaljer.
Om man väljer att köra verktyget i console läge, så kommer diagnostiseringsinformationen på stdout.
I denna så kommer en sammanställning av det totala regelutfallet att visas.
- Verkställda och godkända regler:
- OK = Krav bedömt och hanterat för att möta kravet
- Verkställda och ej godkända regler
- EJ OK = Krav bedömt, men API:et möter inte kravet
- Ej tillämpade regler
- N/A = Krav bedömt men inte applicerbart på API:et
Exempel:
I exemplet ovan framgår det att kraven för reglerna AME.05 och VER.05 är godkända och att det aktuella API:et uppfyller dessa.
Däremot är kravet för regeln DOK.03 inte godkänt, vilket innebär att API:et inte möter detta krav.
Dessutom framgår det att reglerna SAK.10 och DOK.01 inte är tillämpade för det aktuella API:et.
Förklaring av detaljering för regelutfall:
Tillsammans med diagnostiseringsinformationen följer en detaljerad beskrivning av informationen för regelutfallet. I denna beskrivning framgår följande:
- Allvarlighetsgrad: Anger allvaret av problemet som upptäckts av regeln. De möjliga värdena är error och warning, vilka tolkas enligt följande:
- Error: Ett uppenbart fel som måste åtgärdas. I REST API-profilen motsvarar detta kravtypen SKALL och SKALL INTE.
- Warning: Ett möjligt fel som kan behöva åtgärdas. Vissa avvikelser från specifika regler kan dock tolereras. I REST API-profilen motsvarar detta kravtypen BÖR och BÖR INTE.
- Område: Det aktuella området i REST API-profilen som regeln gäller för.
- Sökväg: Sökvägen till felet, det vill säga den JSONPath som pekar på det fält som diagnostiken avser och som orsakade felet.
- Omfattning: Det omfång som denna diagnostik gäller.
Exempel:
I exemplet ovan framgår det att kravet för regeln DOK.01 inte är godkänt och att det aktuella API:et inte uppfyller detta.
Kravet har bedömts ha allvarlighetsgraden Error eftersom API:et bryter mot ett SKALL/SKALL INTE-krav i REST API-profilen.
Det finns också information om var i den aktuella OpenAPI-specifikationen problemet återfinns.
Vidare framgår det att kravet för regeln DOK.03 inte är godkänt och att det aktuella API:et inte möter detta krav.
Kravet har bedömts ha allvarlighetsgraden Warning eftersom API:et bryter mot ett BÖR/BÖR INTE-krav i REST API-profilen.
Även här finns information om var i den aktuella OpenAPI-specifikationen problemet återfinns.
- Det går endast att köra RAP-LP mot en enda YAML-fil åt gången.
Om du har frågor, funderingar, buggrapporter etc, vänligen kontakta Digg - Agency for Digital Government
- Gå till GitHub → Settings → Developer settings → Personal access tokens → Tokens (classic) → Generate new token → Generate new token (classic).
- Sätt en beskrivning för ditt token under
Noteoch ett utgångsdatum underExpiration(ha utgångsdatum!). - Select scopes → read:packages
- Skapa token → kopiera värdet direkt (visas bara en gång).
npm login --registry=https://npm.pkg.github.com
# username: ditt GitHub-användarnamn
# password: GitHub PAT med read:packagespodman login ghcr.io
# username: ditt GitHub-användarnamn
# password: GitHub PAT med read:packagesVid körningar med podman och docker i kombination med flaggor som sparar information till filer kan det uppstå problem kring skrivrättigheter som gör att filer inte dyker upp som önskat. Filerna kan finnas i containern men dyker inte i den mountade katalogen som specificerats.
Se till att containern har rättigheter att skriva till den katalog som du mountar.
-
Kolla rättigheter
ls -ld /path/to/mount
-
Prova köra som
root userpodman run -it -v $(pwd):/data --user root ghcr.io/diggsweden/rest-api-profil-lint-processor:<version> -f /data/openapi.yaml -l /data/raplp.log --dex /data/avstamning.xlsx
-
För att testa om det är ett åtkomstproblem kan du temporärt prova om det går efter du gett alla skrivrättigheter till den mountade katalogen:
sudo chmod 777 /path/to/mount
-
Beroende på din miljö och vilka möjligheter du har, hantera åtkomstproblemet mer beständigt och återställ tidigare läs- och skrivrättigheter.
-
Du kan även prova:
sudo podman run -it -v $(pwd):/data ghcr.io/diggsweden/rest-api-profil-lint-processor:<version> -f /data/openapi.yaml -l /data/raplp.log --dex /data/avstamning.xlsx
Om du vill bidra till projektet, vänligen följ instruktionerna i avsnittet Contributing.
För utvecklare finns det mer information i avsnittet Development.
- Vänligen kontakta Digg - Agency for Digital Government
European Union Public Licence v. 1.2 Se LICENS för mer detaljer.
Copyright: Contributor Covenant
Licens: CC-BY-4.0
Digg - Agency for Digital Government
Speciellt tack till

