Arquivos
Diversos serviços nossos esperam receber documentos para que a análise seja realizada. O envio destes pode ser realizado de três maneiras:
- Multipart - form-data
O arquivo pode ser enviado na requisição como "multipart/form-data". Essa maneira é a mais recomendada e pode ser facilmente implementada nas diversas linguagens e ferramentas.
curl --request POST \
--url 'https://example-url.nxcd.app/endpoint' \
--header 'Authorization: ApiKey <TOKEN>' \
--header 'Content-Type: multipart/form-data' \
--form 'frente=@/documento-frente-exemplo.jpg' \
--form 'verso=@/documento-verso-exemplo.jpg'const form = new FormData();
form.append("frente", "./documento-frente-exemplo.jpg");
form.append("verso", "./documento-verso-exemplo.jpg");
const options = {
method: 'POST',
headers: {
'Content-Type': 'multipart/form-data; boundary=---011000010111000001101001',
Authorization: 'ApiKey <TOKEN>'
}
};
options.body = form;
fetch('https://example-url.nxcd.app/endpoint', options)
.then(response => response.json())
.then(response => console.log(response))
.catch(err => console.error(err));import axios from "axios";
const form = new FormData();
form.append("frente", "./documento-frente-exemplo.jpg");
form.append("verso", "./documento-verso-exemplo.jpg");
const options = {
method: 'POST',
url: 'https://example-url.nxcd.app/endpoint',
params: {
},
headers: {
'Content-Type': 'multipart/form-data; boundary=---011000010111000001101001',
Authorization: 'ApiKey <TOKEN>'
},
data: '[form]'
};
axios.request(options).then(function (response) {
console.log(response.data);
}).catch(function (error) {
console.error(error);
});import requests
url = "https://example-url.nxcd.app/endpoint"
querystring = {}
payload = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"frente\"; filename=\"documento-frente-exemplo.jpg\"\r\nContent-Type: image/jpeg\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"verso\"; filename=\"documento-verso-exemplo.jpg\"\r\nContent-Type: image/jpeg\r\n\r\n\r\n-----011000010111000001101001--\r\n"
headers = {
"Content-Type": "multipart/form-data; boundary=---011000010111000001101001",
"Authorization": "<TOKEN>"
}
response = requests.request("POST", url, data=payload, headers=headers, params=querystring)
print(response.text)response = HTTPoison.post!(
"https://example-url.nxcd.app/endpoint",
{:multipart, [
{:file, "/documento-frente-exemplo.jpg", {"form-data", [{:name, "frente"}, {:filename, Path.basename("/documento-frente-exemplo.jpg")}]}, []},
{:file, "/documento-verso-exemplo.jpg", {"form-data", [{:name, "verso"}, {:filename, Path.basename("/documento-verso-exemplo.jpg")}]}, []}
]},
[
{"Authorization", "ApiKey <TOKEN>"},
{"Content-Type", "multipart/form-data"}
]
)import 'package:http/http.dart' as http;
void main() async {
final url = Uri.parse('https://example-url.nxcd.app/endpoint');
final req = http.MultipartRequest('POST', url)
..files.add(await http.MultipartFile.fromPath(
'frente', '/documento-frente-exemplo.jpg'))
..files.add(await http.MultipartFile.fromPath(
'verso', '/documento-verso-exemplo.jpg'));
req.headers['Authorization'] = 'ApiKey <TOKEN>';
req.headers['Content-Type'] = 'multipart/form-data';
final stream = await req.send();
final res = await http.Response.fromStream(stream);
final status = res.statusCode;
if (status != 200) throw Exception('http.send error: statusCode= $status');
print(res.body);
}- Base64
O envio pode ser feito através do base64 da imagem original, enviando-o em formato JSON no body da requisição, conforme abaixo:
{
"base64": {
"arquivo1": "BASE_64_1_AQUI",
"arquivo2": "BASE_64_2_AQUI"
}
}- Link Externo - URL
É possível também enviar a URL da imagem e nossos serviços realizarão o download dela. O envio pode ser realizado da seguinte maneira:
{
"urls": {
"arquivo1": "URL_AQUI",
"arquivo2": "URL_AQUI"
}
}WARNING
Vale ressaltar a importância dos cuidados que devem ser tomados ao utilizar esse formato. Como nosso serviço irá buscar essa imagem, a URL deverá estar pública. Dessa forma, é de extrema importância adicionar políticas de acesso e/ou tempo de expiração para essas URL's, por exemplo. Além disso deve-se compreender que o tempo da requisição será mais longo que nos outros formatos, pois dependerá do tempo de download do arquivo pelo servidor na URL enviada.