lovebird25 / CURL_EXAMPLES.md
Paul
Initial commit
75146bf
# CURL Examples for ML Text Classification API
## Local Testing
### 1. Health Check
```bash
curl http://localhost:8000/health
```
Expected Response:
```json
{"status": "healthy"}
```
### 2. Root Endpoint
```bash
curl http://localhost:8000/
```
Expected Response:
```json
{
"message": "ML Text Classification API",
"version": "1.0.0",
"endpoints": {
"health": "/health",
"predict": "/predict"
}
}
```
### 3. Prediction Endpoint (Main)
```bash
curl -X POST "http://localhost:8000/predict" \
-H "Content-Type: application/json" \
-d '{"text": "Hi ||| Hi anh"}'
```
Expected Response:
```json
{
"results": [
{"label": "label_name_1", "score": 0.95},
{"label": "label_name_2", "score": 0.03},
...
]
}
```
## Vercel / Production Deployment
After deploying, replace `your-project.vercel.app` with your actual domain:
### 1. Health Check
```bash
curl https://your-project.vercel.app/health
```
### 2. Root Endpoint
```bash
curl https://your-project.vercel.app/
```
### 3. Prediction Endpoint
```bash
curl -X POST "https://your-project.vercel.app/predict" \
-H "Content-Type: application/json" \
-d '{"text": "Hi ||| Hi anh"}'
```
## Advanced Examples
### Using jq for Pretty Output
```bash
curl -X POST "http://localhost:8000/predict" \
-H "Content-Type: application/json" \
-d '{"text": "Hi ||| Hi anh"}' | jq '.'
```
### Sorting Results by Score
```bash
curl -X POST "http://localhost:8000/predict" \
-H "Content-Type: application/json" \
-d '{"text": "Hi ||| Hi anh"}' | jq '.results | sort_by(.score) | reverse'
```
### Getting Top 3 Predictions
```bash
curl -X POST "http://localhost:8000/predict" \
-H "Content-Type: application/json" \
-d '{"text": "Hi ||| Hi anh"}' | jq '.results | sort_by(.score) | reverse | .[0:3]'
```
## Testing with Different Text
### Example 1
```bash
curl -X POST "http://localhost:8000/predict" \
-H "Content-Type: application/json" \
-d '{"text": "Hello ||| Hi there"}'
```
### Example 2
```bash
curl -X POST "http://localhost:8000/predict" \
-H "Content-Type: application/json" \
-d '{"text": "Xin chào ||| Chào bạn"}'
```
## Error Handling
### Empty Text (400 Error)
```bash
curl -X POST "http://localhost:8000/predict" \
-H "Content-Type: application/json" \
-d '{"text": ""}'
```
Expected Response:
```json
{
"detail": "Text field is required and cannot be empty"
}
```
### Missing Text Field (422 Error)
```bash
curl -X POST "http://localhost:8000/predict" \
-H "Content-Type: application/json" \
-d '{}'
```
Expected Response:
```json
{
"detail": [
{
"type": "missing",
"loc": ["body", "text"],
"msg": "Field required",
"input": {}
}
]
}
```
## Python Requests Examples
If you prefer Python instead of curl:
```python
import requests
# Prediction
response = requests.post(
"http://localhost:8000/predict",
json={"text": "Hi ||| Hi anh"}
)
print(response.json())
```
## JavaScript/Fetch Examples
```javascript
fetch('http://localhost:8000/predict', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
text: 'Hi ||| Hi anh'
})
})
.then(response => response.json())
.then(data => console.log(data));
```