zoukankan      html  css  js  c++  java
  • dotnet core3.1 下使用HttpClient.PostAsync()在服务内部请求第三方服务时注意事项

    命名空间

    System.Net.Http

    Post请求

    1.如果参数是 ?phone="15071651111" 的形式发起的post请求 则webapi中 Controller 的方法需要加上 [FromQuery]

    例:

    string url = _userServiceUrl + "api/User/CheckOrCreate?phone=" + phone;
    var response = await _httpClient.PostAsync(url, null);
    

    webapi:

    public async Task<IActionResult> CheckOrCreate([FromQuery]string phone)
    {
        //dosomething...
    }
    

    2.如果参数是通过HttpContent发送的单个字符串则webapi中 Controller 的方法需要加上 [FromForm]

    例:

    var data = new FormUrlEncodedContent(new Dictionary<string, string> {{"phone",phone }});
    var response = await _httpClient.PostAsync(url, data);
    

    webapi:

    public async Task<IActionResult> CheckOrCreate([FromForm]string phone)
    {
        //dosomething...
    }
    

    3.如果参数是通过HttpContent发送的JSON则webapi中 Controller 的方法需要加上 [FromBody]

    例:

    string url = _userServiceUrl + "api/User/CheckOrCreate";
    UserInfoDto dto = new UserInfoDto { Name = "Yuan", Phone = phone };
    var data = new StringContent(JsonConvert.SerializeObject(dto),Encoding.UTF8,"application/json");
    

    webapi:

    public async Task<IActionResult> CheckOrCreate([FromBody]CheckOrCreateAppUserViewModel model)
    {
        //dosomething
    }
    

    补充

    4.如果参数是 ?phone="15071651111" 的形式发起的post请求 则webapi中 Controller 的方法也可以使用 [FromUri]

    例:

    string url = _userServiceUrl + "api/User/CheckOrCreate?phone=" + phone;
    var response = await _httpClient.PostAsync(url, null);
    

    webapi:

    public async Task<IActionResult> CheckOrCreate([FromUri] XXXModel mode)
    {
        //dosomething...
    }
    

    注意

    控制器内不要声明多个同名不同参且请求方式也一样的控制器,否则会提示匹配多个路由的问题(也有可能是我路由没有配好的原因)

    image

  • 相关阅读:
    关于asp:ImageButton的一点经验
    web测试工具及测试方法
    关于NETSNS社区网站开源代码中一些bug修正的记录
    生成验证码的一段源代码
    我存放文件的空间
    一个简单但界面美观,功能实用的电子商务网站源码
    VS2008脚本调试的一点经验
    web测试的经验总结
    提供收藏夹和设置主页对话框的js语句
    一个界面很不错的blog网站
  • 原文地址:https://www.cnblogs.com/imtudou/p/13726670.html
Copyright © 2011-2022 走看看