gpt4 book ai didi

c++ - 从 GRPC c++ 服务器实现返回 'not found' 响应的正确方法是什么?

转载 作者:行者123 更新时间:2023-11-28 04:03:41 25 4
gpt4 key购买 nike

我正在浏览指南和文档,但对惯用的 C++ 编程不是很熟悉。在我见过的所有服务器实现案例中,响应 grpc::Status::OK 在 RPC 实现结束时返回,例如:

(来自 https://github.com/grpc/grpc/blob/master/examples/cpp/helloworld/greeter_server.cc)

class GreeterServiceImpl final : public Greeter::Service {
Status SayHello(ServerContext* context, const HelloRequest* request,
HelloReply* reply) override {
std::string prefix("Hello ");
reply->set_message(prefix + request->name());
return Status::OK;
}
};

Status::OK 是 总是 的预期实现模式吗?在失败情况下是否应该返回其他选项(例如对未找到所请求资源的 404 响应)?

或者您是否期望您将相关的错误条件编码到您自己的原型(prototype)消息中,并始终回复一条可能包含错误详细信息的消息?

我认为文档反射(reflect)了可以返回其他状态代码(例如 NOT_FOUND),但是当我尝试这样做时我遇到了编译错误:

“grpc::Status”中没有名为“NOT_FOUND”的成员;您是说“grpc::NOT_FOUND”吗?

如果我不返回 grpc::NOT_FOUND,方法不喜欢它,因为它是不兼容的类型。

最佳答案

您可以通过使用代码和消息创建 Status() 来返回显式生成的状态,例如:

return grpc::Status(grpc::StatusCode::NOT_FOUND, "error details here");

并返回它而不是 Status::OK 以发送错误消息;

关于c++ - 从 GRPC c++ 服务器实现返回 'not found' 响应的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59094839/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com