compreface-javascript-sdk icon indicating copy to clipboard operation
compreface-javascript-sdk copied to clipboard

recognitionService.recognize without limit parameter results in malformed url

Open No3x opened this issue 3 years ago • 2 comments

Describe the bug If you call recognize without limit parameter the url is not valid and a 400 is returned from the REST API.

To Reproduce

try {
    const result = await recognitionService.recognize(path_toTestImage, {
      face_plugins: 'landmarks,gender,age',
      det_prob_threshold: 0.95,
      status: true
    });
} catch (e) {
    console.error('Error while recognize' + e.message);
    console.error(e.config.url); // <-- comes here. not good
}

Prints http://localhost:8000/api/v1/recognition/recognize?det_prob_threshold=0.95?face_plugins=landmarks,gender,age?status=true

Expected behavior If I do not pass limit it should use a default or build a valid url. Should be http://localhost:8000/api/v1/recognition/recognize?det_prob_threshold=0.95&face_plugins=landmarks,gender,age&status=true

Maybe other webservers/backends do not care but I use the docker-compose version from https://github.com/exadel-inc/CompreFace/releases/tag/v1.0.0

No3x avatar May 19 '22 21:05 No3x

I did another check and it seems like it can be reproduced also with

const result = await recognitionService.recognize(path_toTestImage, {
      det_prob_threshold: 0.95,
      status: true
});

http://localhost:8000/api/v1/recognition/recognize?det_prob_threshold=0.95?status=true

Adding limit fixes it

const result = await recognitionService.recognize(path_toTestImage, {
      limit: 0,
      det_prob_threshold: 0.95,
      status: true
});

No3x avatar May 19 '22 21:05 No3x

We are working on this issue and it will be fixed in the next release

smchedlidze826 avatar Jun 01 '22 11:06 smchedlidze826