【问题标题】:How ASP.NET CORE uses RPC to call other API interfacesASP.NET CORE 如何使用 RPC 调用其他 API 接口
【发布时间】:2022-01-25 21:06:33
【问题描述】:

我现在有个asp.net core web api的新项目,我用它作为主要语言,但是有些接口是用java完成的,现在公司已经改为asp.net core作为主要语言了。我可以再次使用asp.net core来完成这些接口,但是没有任何意义。于是上网查了资料,建议我用rpc调用之前的接口。我该怎么做?

以其中一个java接口为例

@ApiOperation(value = "Send email registration verification code")
    @GetMapping("send_code")
    public JsonData sendRegisterCode(@ApiParam("Recipient") @RequestParam(value = "to", required = true) String to,
                                     @ApiParam("Verification code") @RequestParam(value = "captcha", required = true) String captcha,
                                     HttpServletRequest request
    ) {

        String key = getCaptchaKey(request);
        String cacheCaptcha = redisTemplate.opsForValue().get(key);
        //Matching graphic verification code

        if (captcha != null && cacheCaptcha != null && captcha.equalsIgnoreCase(cacheCaptcha)) {
            //success
            redisTemplate.delete(key);
            JsonData jsonData = notifyService.sendCode(SendCodeEnum.USER_REGISTER, to);
            return jsonData;

        } else {
            return JsonData.buildResult(BizCodeEnum.CODE_CAPTCHA_ERROR);
        }

    }

    private String getCaptchaKey(HttpServletRequest request) {
        String ip = CommonUtil.getIpAddr(request);
        String userAgent = request.getHeader("User-Agent");
        String key = "user-service:captcha:" + CommonUtil.MD5(ip + userAgent);
        return key;
    }

如何调用修改后的api?非常感谢您对文档和代码的任何建议!

【问题讨论】:

    标签: asp.net-core rpc


    【解决方案1】:

    您可以使用grpc模板创建项目:

    参考文件:

    https://docs.microsoft.com/en-us/aspnet/core/grpc/?view=aspnetcore-3.1

    如果你想在现有项目上使用,可以这样做:

    1.添加所需的 NuGet 包

    Install-Package Grpc.Net.Client
    Install-Package Google.Protobuf
    Install-Package Grpc.Tools
    

    2.添加 greet.proto

    在 gRPC 客户端项目中创建一个 Protos 文件夹。

    将 Protos\greet.proto 文件从 gRPC Greeter 服务复制到 gRPC 客户端项目中的 Protos 文件夹。

    将 greet.proto 文件中的命名空间更新为项目的 命名空间: 选项 csharp_namespace = "GrpcGreeterClient";

    添加一个项目组,其中包含一个引用 greet.proto 文件的元素:

    <ItemGroup>
      <Protobuf Include="Protos\greet.proto" GrpcServices="Client" />
    </ItemGroup>
    

    3.创建Greeter客户端和使用gRPC Greeter服务测试gRPC客户端的具体步骤,参考官方文档:

    https://docs.microsoft.com/en-us/aspnet/core/tutorials/grpc/grpc-start?view=aspnetcore-6.0&tabs=visual-studio

    【讨论】:

    • 问题没有提到gRPC,代码中的注释和JSON格式暗示它是一个Web API,但问题太模糊,无法回答。
    • 我正在考虑使用grpc协议来完成,我去研究一下,谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-22
    • 2022-01-05
    • 1970-01-01
    • 1970-01-01
    • 2018-09-10
    • 2020-08-02
    相关资源
    最近更新 更多