ASP.NET Core 中是否有 PostAsJsonAsync() 方法?

咨询区

  • LP13

在 Asp.NET 中我一般都用 PostAsJsonAsync() 做数据提交,在 Asp.NET Core 时代我貌似没有找到,按照程序集的命名规范,我觉得应该也是由 Microsoft.AspNet.WebApi.Client 迁移到 Microsoft.AspNetCore.WebApi.Client 中。

回答区

  • Jeremy Caney

.NET 5.0 开始,你说的这个方法被引入到了 HttpClient 中,你可以引入 System.Net.Http.Json 命名空间,可以参考微软的官方文档:https://docs.microsoft.com/en-us/dotnet/api/system.net.http.json.httpclientjsonextensions.postasjsonasync?view=net-5.0  参考如下代码:

using System.Net.Http;          //HttpClient, HttpResponseMessage
using System.Net.Http.Json;     //HttpClientJsonExtensions
using System.Threading;         //CancellationToken
using System.Threading.Tasks;   //Tasknamespace ConsoleApp2
{class Program{static void Main(string[] args){var httpClient = new HttpClient();var url = "https://StackOverflow.com";var data = new MyDto();var source = new CancellationTokenSource();var response = await httpClient.PostAsJsonAsync<MyDto>(url, data, source.Token);}}
}
  • j.ghadiri

之所以没有是因为 *AsJsonAsync() 系列方法本身就不是 ASP.NET Core 项目的一部分,不过你可以在 ASP.NET Core 中扩展一个 PostAsJsonAsync 方法即可 ,参考如下代码:

using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading.Tasks;
using Newtonsoft.Json;public static class HttpClientExtensions
{public static Task<HttpResponseMessage> PostAsJsonAsync<T>(this HttpClient httpClient, string url, T data){var dataAsString = JsonConvert.SerializeObject(data);var content = new StringContent(dataAsString);content.Headers.ContentType = new MediaTypeHeaderValue("application/json");return httpClient.PostAsync(url, content);}public static Task<HttpResponseMessage> PutAsJsonAsync<T>(this HttpClient httpClient, string url, T data){var dataAsString = JsonConvert.SerializeObject(data);var content = new StringContent(dataAsString);content.Headers.ContentType = new MediaTypeHeaderValue("application/json");return httpClient.PutAsync(url, content);}public static async Task<T> ReadAsJsonAsync<T>(this HttpContent content){var dataAsString = await content.ReadAsStringAsync().ConfigureAwait(false);return JsonConvert.DeserializeObject<T>(dataAsString);}
}
  • f.capet

既然是异步的 post json ,其实你可以用 HttpClient 中现存的 PostAsync() 方法做个周转就好了,data 数据可以用 JsonConvert.SerializeObject 序列化,参考如下代码:

public static async Task<HttpResponseMessage> PostAsJsonAsync<T>(this HttpClient httpClient, string url, T data)
{var dataAsString = JsonConvert.SerializeObject(data);var content = new StringContent(dataAsString);content.Headers.ContentType = new MediaTypeHeaderValue("application/json");return await httpClient.PostAsync(url, content);
}

点评区

确实现如今都被 HttpClient 所替代,而且这个类还是内置的,不需要引用任何 Nuget 包,太方便了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/293448.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OSI七层模型的作用

第七层&#xff1a;应用层 数据 用户接口&#xff0c;提供用户程序“接口”。 第六层&#xff1a;表示层 数据 数据的表现形式&#xff0c;特定功能的实现&#xff0c;如数据加密。 第五层&#xff1a;会话层 数据 允许不同机器上的用户之间建立会话关系&#xff0c;如WINDOW…

MyBatis学习总结(17)——Mybatis分页插件PageHelper

2019独角兽企业重金招聘Python工程师标准>>> 如果你也在用Mybatis&#xff0c;建议尝试该分页插件&#xff0c;这一定是最方便使用的分页插件。 分页插件支持任何复杂的单表、多表分页&#xff0c;部分特殊情况请看重要提示。 想要使用分页插件&#xff1f;请看如何…

微信发力了,一键部署网站后端!

大家好&#xff0c;我是鱼皮。还记得么&#xff1f;之前我全程直播带大家从 0 到 1 做了一个包含前端、后端的 表情包网站项目 &#xff0c;支持搜索表情、自由裁切下载、给表情包配字等功能。爸爸表情包网站在线编辑下载但由于各方面的原因&#xff0c;我暂时将该网站战术下线…

数据可视化(9)--数据可视化6步法

在当前互联网&#xff0c;各种数据可视化图表层出不穷&#xff0c;本文尝试对数据可视化的方法进行归纳&#xff0c;整理成6步法。一般的数据图表都可以拆分成最基本的两类元素: 所描述的事物及这个事物的数值&#xff0c;我们暂且将其分别定义为指标和指标值。比如一个性别分布…

数据挖掘在呼叫中心的六大应用点

当前商业正在从“以产品为中心”到“以用户为中心”转变&#xff0c;很多企业将CRM作为企业成功的一个关键因素&#xff0c;呼叫中心作为影响用户最直接的渠道&#xff0c;起着至关重要的作用&#xff1b;利用数据挖掘技术&#xff0c;可以提高企业呼叫中心的效率的同时来增加客…

c++win32项目 如何显示后再删除一个绘图_iMATLAB 绘图扩展函数系列 | 让你绘图更自由(进阶专辑开篇)!...

本专辑参考了mathworks公司主页文件交换站的一些分享文件&#xff0c;遴选部分绘图扩展函数供初学者参考&#xff0c;仅用作学习资料传播&#xff0c;版权属于原作者&#xff0c;特此致谢。如有不妥&#xff0c;请联系删除。本专辑将持续更新&#xff0c;欢迎读者投稿自己绘图函…

HTML5:理解head

2019独角兽企业重金招聘Python工程师标准>>> HTML文档的head部分&#xff0c;通常包括指定页面标题&#xff0c;为搜索引擎提供关于页面本身的信息&#xff0c;加载样式表&#xff0c;以及加载JavaScript文件&#xff08;出于性能考虑&#xff0c;多数时候放在页面底…

Android之什么场景该使用单例模式总结

1、什么是单例模式 单例模式意味着只有一个对象,至于单例模式如何实现就不这里就不多说了,有很多种实现办法。 2、什么时候该使用单例模式?如果不使用单例模式会出现什么问题? 先举2个例子 例子1 当我们做得到最新的短信和最新的通话记录的时候,我们一般采…

Dapr项目应用探索

背景介绍前面文章对Dapr的基本信息进行了学习&#xff0c;接下来尝试将Dapr应用相关应用中。接下来一步步实现应用dapr功能。一、预期效果如上图应用Dapr点包含&#xff1a;a) 报表服务绑定统一数据源服务&#xff1a;接受更新通知  b) 业务系统调用报表操作:采用Dapr方式二、…

为什么当代人越来越不快乐?

全世界只有3.14 % 的人关注了爆炸吧知识小时候哭着哭着就笑了&#xff0c;长大后笑着笑着就哭了。生活不易&#xff0c;成年人叹气&#xff0c;房租水费&#xff0c;学习压力、工作不如意...各种无形的压力&#xff0c;压得人喘不过气。如果一绷得太紧&#xff0c;再坚韧的弦也…

解读C#正则表达式

为什么80%的码农都做不了架构师&#xff1f;>>> 多少年来&#xff0c;许多的编程语言和工具都包含对正则表达式的支持&#xff0c;.NET基础类库中包含有一个名字空间和一系列可以充分发挥规则表达式威力的类&#xff0c;而且它们也都与未来的Perl 5中的规则表达式兼…

《SAS编程与数据挖掘商业案例》学习笔记之十九

继续《SAS编程与数据挖掘商业案例》学习笔记&#xff0c;本文侧重数据处理实践&#xff0c;包括&#xff1a;HASH对象、自定义format、以及功能强大的正则表达式 一&#xff1a;HASH对象 Hash对象又称散列表&#xff0c;是根据关键码值而直接进行访问的数据结构&#xff0c;是根…

do { ....} while(0) 在宏里冗余的意义

do { ....} while(0) 在宏里冗余的意义 cocos2d-x提供了许多宏模板&#xff0c;如&#xff1a;CC_SAFE_RETAIN(p),CC_SAFE_DELETE(p) 等等 查看一下CC_SAFE_RETAIN的源码&#xff1a; #define CC_SAFE_RETAIN(p) do { if(p) { (p)->retain(); } } while(0) 为什么…

iphone换机数据迁移_iPhone迁移数据到Android(相册与短信)

2020年09月20日前言&#xff1a;卖掉iPhone7暂时回到Android手机&#xff0c;然后需要将iPhone内的资料迁移到新手机中。我尽量不使用第三方工具实现迁移工作。一般新手机都会有迁移助手&#xff0c;但是都不完美&#xff0c;毕竟是两个不同手机系统&#xff0c;很多东西还是需…

网关和路由的区别

网关&#xff1a;网关实质上是一个网络通向其他网络的IP地址。比如有网络A和网络B&#xff0c;网络A的IP地址范围为“192.168.1.1~192. 168.1.254”&#xff0c;子网掩码为255.255.255.0&#xff1b;网络B的IP地址范围为“192.168.2.1~192.168.2.254”&#xff0c;子网掩码为25…

Java里阻塞线程的三种实现方法

在日常开发中&#xff0c;我们有时会遇到遇到多线程处理任务的情况&#xff0c;JDK里提供了便利的 ThreadPoolExecutor以及其包装的工具类Executors。但是我们知道 ExecutorService.excute(Runnable r)是异步的&#xff0c;超过线程池处理能力的线程会被加入到执行队列里。有时…

使用 dotnet-outdated 维护项目 nuget 包版本

使用 dotnet-outdated 维护项目 nuget 包版本Intro我们项目中或多或少都会有一些 NuGet 包&#xff0c;使用到 NuGet 包时&#xff0c;如何保证我们的 NuGet 包不会太旧呢&#xff1f;我们可以借助 dotnet-outdated 来检查项目中的 NuGet 包是否有更新Sample首先我们需要执行 d…

mysql-5.5.31主从复制

给数据库用户配置groupadd mysqluseradd -g mysql mysql -s /sbin/nologinrm -rf /home/mysqlmkdir -p /opt/mysqlchmod -R 755 /opt/mysqlchown -R mysql:mysql /opt/mysql准备工作&#xff1a;安装基本依赖包&#xff0c;先用yum安装cmake、automake 、autoconf &#xff0c;…