Recherche d'objectif de reconnaissance | POST /v2/search
Interface de recherche d'objectifs d'image par reconnaissance visuelle.
Action
POST /v2/search
Authentification
En-tête HTTP
Content-Type : multipart/form-data
Authorization (uniquement pour l'authentification par jeton API Key)
Paramètres de requête
| Champ | Type | Requis | Description |
|---|---|---|---|
| image | Multipart | Oui | Chaîne encodée en base64 du contenu de l'image, supportant les formats JPG et PNG. |
| notracking | Chaîne | Non | "false" renvoie l'image de suivi trackingImage. "true" renvoie uniquement l'attribut targetId détecté, sans l'image de suivi. Pour WebAR, il est recommandé de l'inclure pour réduire la latence des requêtes. |
Exemple de requête avec authentification par jeton
curl -X POST -H "Authorization:xxx" --form "image=@trackingImage.jpg;type=image/jpg" --form appId=YOUR-APPID
https://<your-domain>-cn1.crs.easyar.com:8443/v2/search
Exemple de requête avec authentification par signature
curl -X POST --form "image=@trackingImage;type=image/jpg"
--form apiKey=YOUR-APIKEY --form appId=YOUR-APPID
--form timestamp=1514736000000
--form signature=xxx
https://<your-domain>-cn1.crs.easyar.com:8443/v2/search
Important
- Utilisez toujours l'URL Client-end-URL comme point d'entrée de reconnaissance, le port HTTPS est 8443.
- Configurez l'en-tête HTTP avec Connection: Keep-Alive pour optimiser les coûts de reconnexion.
Champs de retour
| Champ | Description |
|---|---|
| statusCode | Code d'état 0 indique une authentification correcte. Voir Codes d'état |
| result | Message d'erreur ou informations sur l'objectif |
| timestamp | Horodatage du serveur au moment de la réponse. Format Unix en millisecondes |
| result.targetId | ID unique de l'objectif |
| result.trackingImage | Chaîne encodée en base64 de l'image de suivi |
| result.name | Nom de l'objectif |
| result.size | Largeur de l'image de référence (en cm). La hauteur est calculée automatiquement par le système selon votre image téléchargée. La taille de l'image de référence correspond à celle du contenu virtuel superposé |
| result.meta | Informations supplémentaires encodées en base64, par exemple une chaîne JSON encodée en base64 |
| result.type | Toujours "ImageTarget" |
| result.active | "1" activé, "0" désactivé |
Codes de retour principaux
| Réponse | HTTPCODE | Statut | Résultat |
|---|---|---|---|
| OK | 200 | 0 | result: { imageBody } |
| NO_RESULT | 404 | 17 | result: { message: "No result: there is no matching." } |
| NO_TARGET | 500 | 18 | result: { message: "Target not found: there is a matching but no target, please report this issue: IMAGE-UUID" } |
| TIMEOUT | 408 | 19 | result: { message: "Request timeout." } |
| OUT_OF_LIMIT | 402 | 21 | result: { message: "You have exceeded the limit of daily scanning." } |
| OUT_OF_QPS | 200 | 21 | result: { message: "Exceed your QPS limitation." } |
| RPC_ERROR | 500 | 20 | result: { message: "Error retrieving results." } |
| OTHER_ERROR | 501 | 30 | result: { message: "Other error occur: details" } |
Codes d'erreur
Voir Liste complète des codes d'état et d'erreur
Exemple de requête
POST /search/ HTTP/1.1
Host:
Date: Mon, 1 Jan 2018 00:00:00 GMT
Content-Type: application/json
{
"image":"/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgM...",
"timestamp": 1514736000000,
"appKey": "test_app_key",
"signature": "89985e2420899196db5bdf16b3c2ed0922c0c221"
}
Exemple de retour
- Si une correspondance est trouvée :
HTTP/1.1 200 OK
Content-Type: application/json
{
"statusCode": 0,
"result": {
"target": {
"targetId":"e61db301-e80f-4025-b822-9a00eb48d8d2",
"trackingImage":"/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgM...",
"name": "easyar",
"size": "5",
"meta": "496fbbabc2b38ecs3460a...",
"type": "ImageTarget",
"modified":1514735000000
"active":"1",
"trackableRate": 0,
"detectableRate": 0,
"detectableDistinctiveness":0,
"detectableFeatureCount": 0,
"trackableDistinctiveness": 0,
"trackableFeatureCount": 0,
"trackableFeatureDistribution": 0,
"trackablePatchContrast": 0,
"trackablePatchAmbiguity": 0
}
},
"timestamp": 1514736000000
}
- Si aucune correspondance n'est trouvée :
HTTP/1.1 404 NOT FOUND
Content-Type: application/json
{
"statusCode": 17,
"result": {
"message": "No result: there is no matching."
}
}