-
Notifications
You must be signed in to change notification settings - Fork 0
Error‐handling‐and‐validation‐reports
Dokumentation om valideringslogik, felrapporter och strukturen av ValidationReport.
Alla verktyg i Try-it-labben genererar en strukturerad valideringsrapport med tre kategorier av meddelanden:
{
valid: boolean,
errors: [
{ code: string, message: string, context: object }
],
warnings: [
{ code: string, message: string, context: object }
],
autoFixes: [
{ code: string, message: string, original: any, fixed: any }
]
}valid: Boolean som indikerar om inputen är giltig enligt strikta valideringsregler. false innebär att data inte kan användas säkert.
errors: Array av kritiska fel som förhindrar användning av data.
warnings: Array av icke-kritiska problem som kan orsaka oväntade resultat.
autoFixes: Array av automatiska korrigeringar som har tillämpats på data.
Errors indikerar att data är ogiltig och inte kan användas säkert. Exempel:
-
JSON_PARSE_ERROR: JSON kan inte parsas -
BBOX_OUT_OF_BOUNDS: BBOX ligger utanför giltigt område -
MISSING_REQUIRED_PARAM: Required parameter saknas -
XML_PARSE_ERROR: XML är inte well-formed -
CORS_ERROR: Server blockerar request p.g.a. CORS Hantering: - Data bör korrigeras innan användning
- Export och vidare bearbetning blockeras (där tillämpligt)
- Tydligt felmeddelande visas i UI
Warnings indikerar potentiella problem som inte nödvändigtvis förhindrar användning. Exempel:
-
BBOX_NEAR_EDGE: BBOX ligger nära gräns för koordinatsystem -
DEPRECATED_PARAMETER: Parameter är deprecated i standard -
BBOX_VERY_SMALL: BBOX mindre än 100x100 meter -
TOO_MANY_LEVELS: Fler än 20 zoomnivåer (prestanda-risk) -
MISSING_TITLE: SLD saknar title-element (best practice) Hantering: - Data kan användas men bör granskas
- Export tillåts med varning
- Gul markering i UI
Auto-fixes indikerar att data har korrigerats automatiskt. Exempel:
-
BBOX_INVERTED_FIXED: minX och maxX har swappats -
TRAILING_COMMA_REMOVED: Trailing comma i JSON har tagits bort -
WHITESPACE_NORMALIZED: Extra whitespace har tagits bort Hantering: - Data är korrigerad och kan användas
- Användare informeras om vad som ändrats
- Blå markering i UI
Alla felkoder följer namnkonventionen CATEGORY_SPECIFIC_ISSUE.
| Kod | Typ | Beskrivning |
|---|---|---|
JSON_PARSE_ERROR |
Error | JSON syntax-fel |
GEOJSON_INVALID_TYPE |
Error | Ogiltigt GeoJSON type-värde |
GEOJSON_MISSING_GEOMETRY |
Error | Feature saknar geometry |
DUPLICATE_KEYS |
Warning | Duplicerade nycklar i objekt |
EMPTY_VALUES |
Warning |
null eller tomma objekt |
| Kod | Typ | Beskrivning |
|---|---|---|
URL_INVALID |
Error | Ogiltig URL-format |
MISSING_REQUIRED_PARAM |
Error | Required parameter saknas |
INVALID_SERVICE |
Error | Service type matchar inte request |
DEPRECATED_PARAMETER |
Warning | Parameter är deprecated |
UNKNOWN_PARAMETER |
Warning | Parameter känns inte igen |
| Kod | Typ | Beskrivning |
|---|---|---|
BBOX_INVALID_FORMAT |
Error | Fel antal värden eller icke-numeriska värden |
BBOX_INVERTED |
Error | minX > maxX eller minY > maxY |
BBOX_OUT_OF_BOUNDS |
Error | Ligger utanför svenska koordinatsystem |
BBOX_VERY_SMALL |
Warning | BBOX mindre än 100x100 meter |
BBOX_VERY_LARGE |
Warning | BBOX större än hela Sverige |
BBOX_NEAR_EDGE |
Warning | BBOX ligger nära gräns |
BBOX_INVERTED_FIXED |
Auto-fix | minX/maxX eller minY/maxY har swappats |
| Kod | Typ | Beskrivning |
|---|---|---|
ZOOM_INVALID_RANGE |
Error | Min > Max eller utanför 0-20 |
BASE_RESOLUTION_INVALID |
Error | Negativt eller noll |
TOO_MANY_LEVELS |
Warning | Fler än 20 zoomnivåer |
| Kod | Typ | Beskrivning |
|---|---|---|
VERY_LARGE_CACHE |
Warning | Cache >100 GB |
TOO_MANY_TILES |
Warning | >1 miljon tiles |
| Kod | Typ | Beskrivning |
|---|---|---|
XML_PARSE_ERROR |
Error | Ogiltig XML-syntax |
SLD_INVALID_VERSION |
Error | Version stöds inte |
SYMBOLIZER_INVALID |
Error | Okänd eller felaktig symbolizer |
COLOR_FORMAT_DEPRECATED |
Warning | Deprecated color-format |
MISSING_TITLE |
Warning | Ingen title-element |
| Kod | Typ | Beskrivning |
|---|---|---|
CORS_ERROR |
Error | Server har inte CORS enabled |
HTTP_404 |
Error | Layer eller resource finns inte |
HTTP_500 |
Error | Server-fel |
TIMEOUT |
Error | Request tog >10 sekunder |
Första steget är att parsa input till en strukturerad representation.
function parse(input) {
try {
return JSON.parse(input);
} catch (error) {
return {
valid: false,
errors: [{
code: 'JSON_PARSE_ERROR',
message: error.message,
context: { position: error.position }
}]
};
}
}Princip: Om parsing misslyckas, avbryts validering. Inga efterföljande checks körs.
Efter parsing körs en serie valideringsregler:
function validate(data) {
const report = {
valid: true,
errors: [],
warnings: [],
autoFixes: []
};
// Rule 1: Check required fields
if (!data.type) {
report.errors.push({
code: 'MISSING_REQUIRED_FIELD',
message: 'Field "type" is required',
context: { field: 'type' }
});
report.valid = false;
}
// Rule 2: Check optional best practices
if (!data.title) {
report.warnings.push({
code: 'MISSING_TITLE',
message: 'Field "title" is recommended',
context: { field: 'title' }
});
}
return report;
}Princip: Alla regler körs även om errors hittas. Detta ger en komplett bild av problem.
Efter validering kan vissa fel korrigeras automatiskt:
function autoFix(data, report) {
// Fix inverted BBOX
if (data.bbox[0] > data.bbox[2]) {
const original = [...data.bbox];
[data.bbox[0], data.bbox[2]] = [data.bbox[2], data.bbox[0]];
report.autoFixes.push({
code: 'BBOX_INVERTED_FIXED',
message: 'Swapped minX and maxX',
original: original,
fixed: data.bbox
});
}
return data;
}Princip: Auto-fixes tillämpas endast när det är säkert och loggas alltid.
Använd error när:
- Data är strukturellt ogiltig (parse-fel, saknade required fields)
- Data ligger utanför giltigt värdeområde (out of bounds)
- Data kan inte användas säkert (CORS-fel, HTTP 404) Exempel:
if (bbox[0] >= bbox[2]) {
report.errors.push({
code: 'BBOX_INVERTED',
message: 'minX must be less than maxX'
});
}Använd warning när:
- Data är tekniskt giltig men potentiellt problematisk
- Best practices inte följs
- Performance-risker finns Exempel:
if (bbox[2] - bbox[0] < 100) {
report.warnings.push({
code: 'BBOX_VERY_SMALL',
message: 'BBOX is smaller than 100 meters'
});
}Använd auto-fix när:
- Problemet är tydligt och entydigt
- Korrigeringen är säker
- Ingen användardialog behövs Exempel:
if (bbox[0] > bbox[2]) {
[bbox[0], bbox[2]] = [bbox[2], bbox[0]];
report.autoFixes.push({
code: 'BBOX_INVERTED_FIXED',
message: 'Swapped minX and maxX',
original: originalBbox,
fixed: bbox
});
}Felkoder ger:
- Maskinläsbarhet: Kod kan logiskt hantera specifika feltyper
- Internationalisering: Meddelanden kan översättas utan att ändra kod
- Dokumentation: Varje felkod kan dokumenteras separat
- Debugging: Enklare att söka efter specifika fel i kod och logs Exempel på användning:
if (report.errors.some(e => e.code === 'CORS_ERROR')) {
showCorsHelp(); // Visa specifik hjälp för CORS-problem
}{
"valid": true,
"errors": [],
"warnings": [],
"autoFixes": []
}Tolkning: Data är helt giltig och kan användas utan problem.
{
"valid": true,
"errors": [],
"warnings": [
{
"code": "BBOX_VERY_SMALL",
"message": "BBOX is smaller than 100x100 meters",
"context": { "width": 50, "height": 50 }
}
],
"autoFixes": []
}Tolkning: Data är giltig men mycket liten BBOX. Granska om detta är avsiktligt.
{
"valid": true,
"errors": [],
"warnings": [],
"autoFixes": [
{
"code": "BBOX_INVERTED_FIXED",
"message": "Swapped minX and maxX",
"original": [200000, 6500000, 150000, 6600000],
"fixed": [150000, 6500000, 200000, 6600000]
}
]
}Tolkning: Data hade inverterad BBOX som har korrigerats automatiskt. Verifiera att korrigeringen är korrekt.
{
"valid": false,
"errors": [
{
"code": "BBOX_OUT_OF_BOUNDS",
"message": "BBOX is outside valid bounds for EPSG:3006",
"context": { "bbox": [1000, 2000, 3000, 4000] }
}
],
"warnings": [],
"autoFixes": []
}Tolkning: Data är ogiltig och kan inte användas. BBOX måste korrigeras manuellt.
- Validera tidigt: Kör validering direkt när användare ändrar input
- Visa alla problem: Visa både errors och warnings samtidigt
- Förklara auto-fixes: Visa vad som ändrats och varför
- Ge konkreta lösningar: Visa inte bara problemet utan hur det fixas
- Prioritera errors: Visa errors först, sedan warnings
- ValidationReport har tre kategorier: errors, warnings, auto-fixes
- Errors förhindrar användning, warnings indikerar potentiella problem
- Alla fel har explicita felkoder för maskinläsbarhet
- Validering körs i tre faser: parsing, validation, auto-fix
- Auto-fixes loggas alltid och visar original och korrigerad data För verktygs-specifika felkoder, se Tool Documentation.