2.6 KiB
2.6 KiB
Address Validation Service
This is a simple address validation service for the Postaci application, designed to validate Swiss addresses.
Features
- Validates and formats Swiss addresses
- Extracts street name, house number, postal code, and city
- Identifies Swiss cantons based on postal code prefixes
- Provides confidence scores for validation results
- Returns standardized address format
- Mock street lookup for testing
Setup & Running
-
Install dependencies:
npm install
-
Start the server:
npm start
For development with auto-restart:
npm run dev
Starting the Development Environment
A startup script has been created to launch both the validation service and the Next.js application:
# From the project root
./start-dev.sh
This will:
- Start the validation service in the background
- Launch the Next.js application
- Automatically stop the validation service when Next.js is terminated
API Endpoints
Validate Address
- URL:
/api/validate-address
- Method:
POST
- Body:
{ "address": "Your address string" }
- Response: Returns a formatted address string if valid, or the original address if validation fails
Detailed Address Validation
- URL:
/api/validate-address/detailed
- Method:
POST
- Body:
{ "address": "Your address string" }
- Response: Returns a detailed validation result with components, confidence score, and validity
Address Lookup (Mock)
- URL:
/api/address-lookup
- Method:
GET
- Query Parameters:
postalCode
orcity
- Response: Returns a list of streets for the given postal code or city
Health Check
- URL:
/api/health
- Method:
GET
- Response:
{ "status": "up", "message": "Address validation service is running" }
Testing the Service
You can test the service using curl:
# Health check
curl http://localhost:8000/api/health
# Validate an address
curl -X POST http://localhost:8000/api/validate-address \
-H "Content-Type: application/json" \
-d '{"address": "Luzernstrasse 27, 4552 Derendingen"}'
# Get detailed validation
curl -X POST http://localhost:8000/api/validate-address/detailed \
-H "Content-Type: application/json" \
-d '{"address": "Luzernstrasse 27, 4552 Derendingen"}'
# Get streets in Zürich
curl "http://localhost:8000/api/address-lookup?postalCode=8000"
Swiss Address Format
The validation service understands the standard Swiss address format:
- Street name + house number (e.g., "Bahnhofstrasse 10")
- Four-digit postal code + city (e.g., "8001 Zürich")
- Canton identification from postal code prefix