RPC响应码非200即被T掉,需要进行优化。
- Vorherrschende Sprache
- PHP
- Sterne
- 6.9k
- Forks
- 1.3k
- Ø Merge
- 4 Std. 21 Min.
- Gemergte PRs (30 T.)
- 4
Beschreibung
hyperf/json-rpc/src/JsonRpcHttpTransporter.php
``` public function send(string $data)
{
$node = $this->getNode();
$uri = $node->host . ':' . $node->port;
$schema = value(function () use ($node) {
$schema = 'http';
if (property_exists($node, 'schema')) {
$schema = $node->schema;
}
if (! in_array($schema, ['http', 'https'])) {
$schema = 'http';
}
$schema .= '://';
return $schema;
});
$url = $schema . $uri;
$response = $this->getClient()->post($url, [
'headers' => [
'Content-Type' => 'application/json',
],
'http_errors' => false,
'body' => $data,
]);
if ($response->getStatusCode() === 200) {
return $response->getBody()->getContents();
}
$this->loadBalancer->removeNode($node);
return '';
}
```
响应码 [200, 300) 应该都是合理的,另外如果用户的错误码规范完全遵循HTTP规范,即如果数据不存在,会返回 404,这种情况也需要被考虑。
Beitragsleitfaden
Rechercherichtung
Beginne in hyperf/json-rpc/src/JsonRpcHttpTransporter.php bei send(). Überprüfe, wie der Antwortstatus behandelt wird, und verifiziere das vorgesehene Verhalten für erfolgreiche 2xx-Antworten und HTTP-definierte Fehler wie 404, einschließlich der Frage, ob der Node entfernt werden sollte.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- php
- Bereich
- api, backend
- Issue-Typ
- Bug
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 38/100