97 lines
2.6 KiB
Markdown
97 lines
2.6 KiB
Markdown
# 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
|
|
|
|
1. Install dependencies:
|
|
```
|
|
npm install
|
|
```
|
|
|
|
2. 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:
|
|
|
|
```bash
|
|
# From the project root
|
|
./start-dev.sh
|
|
```
|
|
|
|
This will:
|
|
1. Start the validation service in the background
|
|
2. Launch the Next.js application
|
|
3. 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` or `city`
|
|
- **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:
|
|
|
|
```bash
|
|
# 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 |