Suggeri API

[support@suggeri.com ~]$ curlie -v \
  POST https://suggeri.anvil.app/_/api/predict_item/2dcf0d2b/A1BW4LQY9U32PC 

> POST /_/api/predict_item/2dcf0d2b/A1BW4LQY9U32PC HTTP/1.1
> Host: suggeri.anvil.app
> Accept: */*

< HTTP/1.1 200 OK
< Content-Type: content-type: application/json
<
< ["535795531X","9788072097","9746427962","9788071813","3227001381"]

< +---------------------------------------------------+
< | NOTE: itens da resposta: 535795531X .. 3227001381 |
< +---------------------------------------------------+

1. Introdução

O sitema de recomendação da Suggeri está disponível como um serviço online e pode ser invocado por meio de uma API RESTful simples e fácil de usar.

1.1 Itens

Para a predição de Itens para um determinado Usuário:

GET https://suggeri.anvil.app/_/api/predict_item/{modelo_id}/{usuario_id}

1.2 Usuários

Para a predição de Usuários para um determinado Item:

GET https://suggeri.anvil.app/_/api/predict_user/{modelo_id}/{item_id}

1.2 Notas de Avaliação

Para a predição de Nota de Avaliação de um Usuários para um determinado Item:

GET https://suggeri.anvil.app/_/api/predict_user_item/{modelo_id}/{usuario_id}/{item_id}

Você também pode usar POST ao invés de GET (A API aceita os dois métodos).

The POST HTTP method is useful when:

2. Parâmetros

modelo_id
O ID do modelo gerado após o treinamento na página Administrativa.
Os IDs são determinados automaticamente pela Suggeri.
usuario_id
O ID do usuário que deseja realizar a predição.
Os valores vão depender do dataset utilizado para treinar o modelo.
item_id
O ID do item que deseja realizar a predição.
Os valores vão depender do dataset utilizado para treinar o modelo.

3. Limits

Como um serviço compartilhado, a API incorpora vários limites de uso que garantem que nenhum usuário único possa impactar negativamente as cargas de trabalho de outros usuários. Verifique seus limites de acordo com o seu plano contratado.

  • Máximo 500 requisições por segundo por cliente. Requisições adicionais resultam em HTTP 429 (Too Many Requests).

Observe que esses limites podem ser alterados conforme necessário, a fim de garantir uma operação suave do serviço para todos os usuários..

Se esses limites forem muito restritivos para o uso pretendido, você pode considerar nos contactar para um Licenciamento de uso privado na infraestrutura de sua empresa.

4. Exemplos

Os snippets e exemplos de código abaixo destinam-se a começar a consumir a API rapidamente com dados de teste, independentemente da sua pilha de tecnologia do lado do cliente. Se você tiver um exemplo de código que use tecnologia diferente, e você gostaria de compartilhá-lo com outros usuários, sinta-se à vontade para nos enviar um email.

4.1. Live Examples

Alguns exemplos ao vivo que usam solicitações GET:

4.2. curl

Usando método GET:

curl --get https://suggeri.anvil.app/_/api/predict_item/2dcf0d2b/A1BW4LQY9U32PC

Usando método POST:

curl --request POST https://suggeri.anvil.app/_/api/predict_item/2dcf0d2b/A1BW4LQY9U32PC

4.3. Postman

Você pode usar o Postman para enviar requisições, acesse https://www.postman.com/.

4.4. PowerShell

Use o método POST:

Invoke-RestMethod `
-Method Post `
-Uri https://suggeri.anvil.app/_/api/predict_item/2dcf0d2b/A1BW4LQY9U32PC `

4.5. Java

Um exemplo Java que usa o Java 11 HttpClient API para enviar um POST:

var uri = URI.create("https://suggeri.anvil.app/_/api/predict_item/2dcf0d2b/A1BW4LQY9U32PC");
var request = HttpRequest.newBuilder(uri)
    .POST()
    .build();
var client = HttpClient.newHttpClient();
var response = client.send(request, BodyHandlers.ofByteArray());
var body = response.body();

if (response.statusCode() == 200) {
    System.out.println(body);
} else {
    var errorMessage = new String(body, StandardCharsets.UTF_8);
    System.out.println(errorMessage);
}

4.6. Python

O exemplo em Python usa a biblioteca Requests para enviar um POST:

import requests
url = 'https://suggeri.anvil.app/_/api/predict_item/2dcf0d2b/A1BW4LQY9U32PC'
response = requests.post(url)

if response.status_code != 200:
    print('Error: ' + response.text)

4.7. Ruby

O exemplo em Ruby usa um POST:

require 'net/http'

uri = URI 'https://suggeri.anvil.app/_/api/predict_item/2dcf0d2b/A1BW4LQY9U32PC'
http = Net::HTTP.new uri.host, uri.port
request = Net::HTTP::Post.new uri.request_uri
response = http.request request

case response
when Net::HTTPSuccess then
else
    puts "Error: #{response.body}"
end

4.8. Node.js

O exemplo em Node.js usa um POST:

var fs = require('fs');
var request = require('request');

var options = {
    encoding: null,
    url: 'https://suggeri.anvil.app/_/api/predict_item/2dcf0d2b/A1BW4LQY9U32PC'
};

request.post(options, function(err, resp, body) {
    if (err) {
        return console.log(err);
    }
    });
});

4.9. D Language

A D language usa um POST:

import std.stdio;
import std.net.curl;

auto url = "https://suggeri.anvil.app/_/api/predict_item/2dcf0d2b/A1BW4LQY9U32PC";

void main() {
    auto conn = HTTP();
    auto result = url.post;
    if (conn.statusLine.code == 200) {
    } else {
        writeln(conn.statusLine.toString());
    }
}

4.10. C#

Um exemplo em C# usa um POST:

var request = (HttpWebRequest) WebRequest.Create("https://suggeri.anvil.app/_/api/predict_item/2dcf0d2b/A1BW4LQY9U32PC");
request.Method = "POST";

var requestStream = request.GetRequestStream();
requestStream.Close();

try {
    var response = (HttpWebResponse) request.GetResponse();
} catch (WebException e) {
    Console.WriteLine("Error: {0}", e.Status);
}

4.11. VB.NET

Um exemplo em VB.NET usa um POST:

Dim request As HttpWebRequest = WebRequest.Create("https://suggeri.anvil.app/_/api/predict_item/2dcf0d2b/A1BW4LQY9U32PC")
request.Method = "POST"

Dim requestStream As Stream = request.GetRequestStream()
requestStream.Write(zpl, 0, zpl.Length)
requestStream.Close()

Try
    Dim response As HttpWebResponse = request.GetResponse()
Catch e As WebException
    Console.WriteLine("Error: {0}", e.Status)
End Try

4.12. ColdFusion

Um exemplo em ColdFusion usa um POST:

<cfoutput>
    <cfhttp url="https://suggeri.anvil.app/_/api/predict_item/2dcf0d2b/A1BW4LQY9U32PC" method="post" result="result">
    </cfhttp>
    <cfcontent variable="#result.Filecontent#" type="#type#" reset="true" />
</cfoutput>

4.13. PHP

Um exemplo em PHP usa um POST:

<?php

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, "https://suggeri.anvil.app/_/api/predict_item/2dcf0d2b/A1BW4LQY9U32PC");
curl_setopt($curl, CURLOPT_POST, TRUE);
$result = curl_exec($curl);

if (curl_getinfo($curl, CURLINFO_HTTP_CODE) == 200) {
} else {
    print_r("Error: $result");
}

curl_close($curl);

?>

4.14. Go Language

Um exemplo em Go usa um POST:

package main

import (
    "os"
    "io"
    "io/ioutil"
    "log"
    "bytes"
    "net/http"
)

func main() {
    req, err := http.NewRequest("POST", "https://suggeri.anvil.app/_/api/predict_item/2dcf0d2b/A1BW4LQY9U32PC", bytes.NewBuffer(zpl))
    if err != nil {
        log.Fatalln(err)
    }

    client := &http.Client{}
    response, err := client.Do(req)
    if err != nil {
        log.Fatalln(err)
    }
    defer response.Body.Close()

    if response.StatusCode == http.StatusOK {
    } else {
        body, err := ioutil.ReadAll(response.Body)
        if err != nil {
            log.Fatalln(err)
        }
        log.Fatalln(string(body))
    }
}