A API Route Optimization tem os seguintes endpoints:
OptimizeTours: um endpoint de bloqueio para solicitações únicas.OptimizeToursLongRunning: um endpoint não bloqueador para solicitações únicas com tempos de solução longos.OptimizeToursUri: um endpoint não bloqueador para solicitações únicas com grandes requisitos de dados.BatchOptimizeTours: um endpoint não bloqueador para várias solicitações processadas simultaneamente.
O endpoint escolhido depende do seu caso de uso, do tamanho da solicitação, do tempo esperado de resolução e se você precisa processar várias solicitações simultaneamente.
Comparar endpoints
Use a tabela a seguir para identificar o endpoint certo para suas necessidades:
| Endpoint | OptimizeTours |
OptimizeToursLongRunning |
OptimizeToursUri |
BatchOptimizeTours |
|---|---|---|---|---|
| Tipo de execução | Bloqueio | Sem bloqueio | Sem bloqueio | Sem bloqueio |
| Requests processed | Solteiro | Solteiro | Solteiro | Várias |
| Tamanho máximo da solicitação | Pequeno | Médio | Grande | Grande |
| Tempo de resolução | Curto | Longo | Longo | Longo |
| Requer o Google Cloud Storage | Não | Não | Sim | Sim |
Entender as características do endpoint
A tabela anterior lista as seguintes características para ajudar você a escolher o endpoint certo:
- Tipo de execução: determina como o aplicativo
processa a conexão de rede enquanto aguarda uma resposta. Há dois tipos:
- Endpoints de bloqueio: mantêm a conexão aberta até que a API retorne uma resposta.
- Endpoints sem bloqueio: processam solicitações em segundo plano. A API retorna imediatamente um ID de operação de longa duração (LRO) que você consulta mais tarde para recuperar os resultados.
- Solicitações processadas: determina se o endpoint processa uma única solicitação de roteamento ou várias solicitações simultaneamente.
- Tamanho máximo da solicitação: solicitações pequenas e médias são enviadas diretamente em linha e têm limites do lado do servidor. Solicitações grandes ignoram esses limites usando o Google Cloud Storage. Encontre os limites exatos de tamanho da solicitação nas seções de detalhes dos endpoints.
- Tempo de resolução: solicitações simples podem ser resolvidas em pouco tempo, enquanto as complexas levam mais tempo. Como o tempo de resolução determina por quanto tempo uma conexão precisa ficar aberta, a escolha do endpoint depende dos limites de tempo limite. Para mais informações, consulte Configurar tempos limite e prazos.
- Requer o Google Cloud Storage: os endpoints que processam solicitações e respostas grandes leem e gravam dados diretamente no Google Cloud Storage. Em vez de enviar os dados na solicitação HTTP, faça upload da solicitação para um bucket do Cloud Storage e transmita o URI para a API.
Detalhes do endpoint
A API Route Optimization tem quatro endpoints. As seções a seguir explicam como cada endpoint funciona e incluem um exemplo de solicitação.
OptimizeTours
OptimizeTours é um endpoint de bloqueio destinado a solicitações únicas
com tempos de solução curtos. Ela retorna uma rota otimizada diretamente na resposta.
Como é um endpoint de bloqueio, mantenha sua conexão de rede aberta
até que a API termine de processar a solicitação para retornar uma resposta. Esse
endpoint aceita solicitações inline de até aproximadamente 4 MB.
Confira um exemplo de solicitação de OptimizeTours
{ "model": { "shipments":[ { "pickups":[ { "arrivalLocation": { "latitude": 37.425062, "longitude": -122.095355 } } ], "deliveries":[ { "arrivalLocation": { "latitude": 37.424215, "longitude": -122.095260 } } ] } ], "vehicles":[ { "travelMode": "DRIVING", "costPerKilometer": 1.0 } ] } }
OptimizeToursLongRunning
OptimizeToursLongRunning é um endpoint não bloqueador para solicitações
únicas com tempos de solução longos. Ele retorna um ID de operação de longa duração (LRO).
É possível pesquisar esse ID usando o endpoint GetOperation para verificar o status da solicitação e recuperar as rotas otimizadas finais. Esse endpoint aceita solicitações inline de até aproximadamente 8 MB.
Confira um exemplo de solicitação de OptimizeToursLongRunning
{ "model": { "shipments":[ { "pickups":[ { "arrivalLocation": { "latitude": 37.425062, "longitude": -122.095355 } } ] } ], "vehicles":[ { "travelMode": "DRIVING", "costPerKilometer": 1.0 } ] } }
OptimizeToursUri
OptimizeToursUri é um endpoint não bloqueador destinado a solicitações únicas com tempos de solução longos e grandes requisitos de dados (mais de 8 MB). Ele
retorna um ID de operação de longa duração (LRO). É possível pesquisar esse ID usando o endpoint
GetOperation para verificar o status da solicitação.
Em vez de enviar o payload inline, faça upload do OptimizeToursRequest
para o Google Cloud Storage. Em seguida, transmita os URIs do Cloud Storage para a solicitação de entrada e o destino de saída à API. O servidor lê os dados do URI de entrada e grava o OptimizeToursResponse final diretamente no URI de saída. Você pode ler as rotas otimizadas desse URI de saída quando
a operação for concluída.
Confira um exemplo de solicitação de OptimizeToursUri
{ "input": { "uri": "gs://your-bucket/path/input/object.json" }, "output": { "uri": "gs://your-bucket/path/output/object.json" } }
BatchOptimizeTours
BatchOptimizeTours é um endpoint não bloqueador destinado a
várias solicitações de otimização independentes processadas simultaneamente. Ele
retorna um ID de operação de longa duração (LRO). É possível pesquisar esse ID usando o
endpoint GetOperation para verificar o status da solicitação e recuperar as rotas otimizadas
finais.
Em vez de enviar o payload inline, faça upload de vários OptimizeToursRequest para o Google Cloud Storage. Em seguida, transmita os URIs do Cloud Storage para a API. O servidor lê os dados dos seus URIs de entrada e grava um
OptimizeToursResponse para cada solicitação diretamente nos seus URIs de saída.
Confira um exemplo de solicitação de BatchOptimizeTours
{ "modelConfigs": [ { "inputConfig": { "gcsSource": { "uri": "gs://your-bucket/path/input/request_1.json" }, "dataFormat": "JSON" }, "outputConfig": { "gcsDestination": { "uri": "gs://your-bucket/path/output/response_1.json" }, "dataFormat": "JSON" } }, { "inputConfig": { "gcsSource": { "uri": "gs://your-bucket/path/input/request_2.json" }, "dataFormat": "JSON" }, "outputConfig": { "gcsDestination": { "uri": "gs://your-bucket/path/output/response_2.json" }, "dataFormat": "JSON" } } ] }