A API Route Optimization tem os seguintes endpoints:
OptimizeTours: um endpoint de bloqueio para solicitações únicas.OptimizeToursLongRunning: um endpoint sem bloqueio para solicitações únicas com tempos de resolução longos.OptimizeToursUri: um endpoint sem bloqueio para solicitações únicas com grandes requisitos de dados.BatchOptimizeTours: um endpoint sem bloqueio para várias solicitações processadas simultaneamente.
O endpoint escolhido depende do caso de uso, do tamanho da solicitação, do tempo de resolução esperado 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 |
| Solicitações processadas | 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: mantenha 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: as solicitações pequenas e médias são enviadas diretamente inline e têm limites do lado do servidor. As solicitações grandes ignoram esses limites usando o Google Cloud Storage. Encontre os limites exatos de tamanho de 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 permanecer 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 resolução curtos. Ela retorna uma rota otimizada diretamente na resposta.
Como é um endpoint de bloqueio, você precisa manter a 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 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 sem bloqueio para solicitações
únicas com tempos de resolução longos. Ele retorna um ID de operação de longa duração (LRO, na sigla em inglês).
É possível consultar 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 OptimizeToursLongRunning
{ "model": { "shipments":[ { "pickups":[ { "arrivalLocation": { "latitude": 37.425062, "longitude": -122.095355 } } ] } ], "vehicles":[ { "travelMode": "DRIVING", "costPerKilometer": 1.0 } ] } }
OptimizeToursUri
OptimizeToursUri é um endpoint sem bloqueio destinado a solicitações
únicas com tempos de resoluçã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 consultar 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 para a API. O servidor lê os dados do URI de entrada e grava o OptimizeToursResponse final diretamente no URI de saída. É possível ler as rotas otimizadas desse URI de saída quando
a operação for concluída.
Confira um exemplo de solicitação OptimizeToursUri
{ "input": { "uri": "gs://your-bucket/path/input/object.json" }, "output": { "uri": "gs://your-bucket/path/output/object.json" } }
BatchOptimizeTours
BatchOptimizeTours é um endpoint sem bloqueio 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 consultar 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 URIs de entrada e grava um
OptimizeToursResponse para cada solicitação diretamente nos 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" } } ] }