首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在我的后端使用[FromBody]来识别WebAPI参数是不是很好的做法?

在后端开发中,使用FromBody来识别WebAPI参数并不是一个很好的做法。FromBody是一个特性标记,用于指示WebAPI框架从请求体中读取参数的值。然而,使用FromBody有一些限制和潜在的问题。

首先,FromBody只适用于POST和PUT请求,因为这些请求通常将参数数据包含在请求体中。对于GET请求,参数通常是通过URL传递的,而不是请求体,因此不适合使用FromBody。

其次,使用FromBody会导致参数绑定的复杂性增加。当使用FromBody时,WebAPI框架会尝试从请求体中读取参数的值,并将其绑定到相应的参数。这可能会导致一些问题,例如无法正确绑定参数、参数类型转换错误等。

另外,使用FromBody还可能导致安全性问题。由于参数值包含在请求体中,可能会导致潜在的安全漏洞,例如参数被篡改、注入攻击等。

相比之下,更好的做法是根据具体的业务需求和请求类型来选择合适的参数绑定方式。对于简单的参数,可以使用FromQuery来从URL中获取参数值。对于复杂的参数,可以考虑使用FromForm来从表单数据中获取参数值。此外,还可以使用FromRoute来从URL路径中获取参数值。

总结起来,使用FromBody来识别WebAPI参数并不是一个很好的做法,因为它有一些限制和潜在的问题。在选择参数绑定方式时,应根据具体的业务需求和请求类型来进行选择,并确保安全性和可靠性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

聊聊asp.net中Web Api使用

扯淡     随着app应用崛起,后端服务开发也越来越多,除了很多优秀nodejs框架之外,微软当然也会在这个方面提供更便捷开发方式。...扯淡到这就完了,下来就聊聊今天主角web api,web api 是mvc4.0之后出现一种技术吧,他创建和带来便利就不介绍了。这边文章主要聊聊,对web api开发一些理解。...话题一:[FromBody]特性修饰符 FromBody是一个修饰参数特性,比如:public void Post([FromBody]string name),那么他作用是什么呢,其实他作用是查询...要注意是:[FromBody]只能修饰单个参数,如果是多个参数的话,就要封装成对象进行数据专递了,比如:public void Post([FromBody]string name,[FromBody...话题二:post传递多个不同对象参数 已经post请求需要使用[FromBody]特性修饰符接收,但是FromBody只能接收单个参数,如果需要传递不同对象输出就比较麻烦了,新建实体对象成本太大,也不能完全适应适应类型

1.5K60

C#进阶系列——WebApi 接口参数不再困惑:传参详解上

1、基础类型参数 post请求基础类型参数和get请求有点不一样,我们知道get请求参数是通过url传递,而post请求则是通过http请求体中传过来WebApipost请求也需要从...通过dynamic动态类型能顺利得到多个参数,省掉了[FromBody]这个累赘,并且ajax参数传递不用使用"无厘头"{"":"value"}这种写法,有没有一种小清新感觉~~有一点需要注意是这里...博主推荐所有基础类型使用dynamic传递,方便解决了基础类型一个或多个参数传递,示例如上文。如果园友们有更好办法,欢迎讨论。...原理解释:使用实体作为参数时候,前端直接传递普通json,后台直接使用对应类型去接收即可,不用FromBody。...而如果使用application/json,则表示将前端数据以序列化过json传递到后端后端要把它变成实体对象,还需要一个反序列化过程。

4.7K90
  • 小范笔记:ASP.NET Core API 基础知识与Axios前端提交数据

    跟同事合作前后端分离项目,自己对 WebApi 很多知识不够全,虽说不必要学全栈,可是也要了解基础知识,才能合理设计接口、API,方便与前端交接。...本文主要写 WebApi 前端请求数据到 API 、后端返回处理结果,不涉及登录、跨域请求、前端 UI 等。(难一点不会了。。。看张队公众号,篇篇都看不懂。。。)...] 当前请求中路由数据 [FromServices] 作为操作参数插入请求服务 一张 Postman 图片: HTTP 请求中,会携带很多参数,这些参数可以在前端设置,例如表单、Header、...刚刚开始时候,这样使用: public async Task BBB([FromBody]int? a, [FromBody]int?...[FromService] 跟后端代码有关,跟 Controller 、Action 、URL、表单数据等无关。 小结: 特性可以几种放在一起用,不过尽量每个 API 参数使用一种特性。

    5.6K00

    webapi POST时坑以及OracleCommand参数绑定

    刚用webapi, 用$.get时,前后台请求响应成功了,但在用$.post方法时遇到不少问题。...后搜到一英文资料,基本反映了问题,现摘译如下: web api 很好,但post参数问题上,需要用些手段,有三个事你要知道 1、传基本参数进去,必须用【frombody】标注一下 public string...(这请求时,还必须把Postaction名称也加上,才执行) $.post('/api/ttt/post',{value:'hshh'}) 2、只能接收一个参数,即不允许多个 [FromBody...不知道项目组当时怎么想。 总上所述。看来要用post传参,永远都写一个类包装一下参数吧! 最后OracleCommand参数绑定时,虽然指定名称,但顺序必须按sql中出现顺序。...http://encosia.com/using-jquery-to-post-frombody-parameters-to-web-api 花了些时间看原博文下留言,太感动人呀!

    68920

    ASP.NET (Core)WebApi参数传递实操演练

    更简单解释: contentType: 告诉服务器,要发什么类型数据。 dataType:告诉服务器,要想什么类型数据。 http 请求中,get 和 post 是最常用。...所以通过上述讲述我们知道有多种方式将数据从客户端传递到服务端,然后模型绑定会自动为我们创建正确方法绑定到后台参数中,简单和复杂类型参数都会进行绑定。...3、ASP.NET WebAPI中FromUri和FromBody两类特性区别 1)、【FromUri】特性 应用【FromUri】特性,Web API Action中参数将从URL中解析数据。...注意:对多个参数使用FromBody不起作用!!!...【FromBody】 :一般用于将多个简单类型参数打包成一个复杂对象类型参数 。 注意:对多个参数使用FromBody不起作用,即也就是说,[FromBody] 修饰参数只能有一个。

    3.7K20

    dotNET Core WebAPI 统一处理(返回值、参数验证、异常)

    现在 Web 开发比较流行前后端分离,我们产品也是一样,前端使用Vue,后端使用 dotNet Core WebAPI写 API 过程中有很多地方需要统一处理 文档 参数验证 返回值 异常处理...环境 dotNet Core:2.1 VS For Mac:8.1 文档 Swagger 是一个 API 文档生成框架,非 Core 时代就一直使用,现在前后端分离模式下,API 文档更是非常重要...,让前端开发人员和后端开发人员能更好沟通和合作,前端开发人员 Swagger 可以了解到接口地址、入参、出参,还能模拟调用,非常方便。...参数验证 此处所说参数验证指的是实体类型参数验证,通过实体属性上添加特性方式实现。...,这是一个很不好做法,仅仅实现了功能,下面将通过过滤器方式进行重构,统一处理错误信息 重构 添加名为 ValidateModelAttribute 过滤器类,继承 ActionFilterAttribute

    11.2K60

    ASP.NET WebAPI参数绑定

    ASP.NET WebAPI参数绑定 当 WebAPI 调用 Controller 上方法时, 必须为其参数赋值, 这个过程就是参数绑定。...本文介绍 WebAPI 如何绑定参数, 以及如何进行自定义。 WebAPI 默认使用下面的规则进行参数绑定: 简单类型, WebAPI 尝试从 URL 中获取它值。...使用 [FromUri] 要强制 WebAPI 从 URL 读取一个复杂类型参数, 则需要在该参数上添加 FromUri 标记。...使用 [FromBody] 要强制 WebAPI 从 request正文 (body) 中读取一个简单类型参数, 需要在该参数上添加 FromBody 标记: public HttpResponseMessage...5076 Content-Type: application/json Content-Length: 7 "Alice" 当一个参数有 [FromBody] 标记时, WebAPI 使用 Content-Type

    2.6K10

    .net core web api + Autofac + EFCore 个人实践

    大家应该经常遇到时间字符串表示中有个T吧,是不是很蛋疼,这句话就是解决这个问题。...1)路由 基于WebAPI或者说Rest路由,一向倾向于用特性路由,而非MVC默认路由,因为更灵活,也更容易符合Rest模式。来看具体控制器: ?...老WebAPI中,是需要通过Route设置,具体请求方法约束需要单独通过类似HttpGet、HttpPut等约束,而.NET CORE中,可以合二为一,路由设置和请求方法约束一起搞定。...起初,是没有添加这个特性,因为根据旧版本经验,前端设置Content-type为json,后端Put,POST实体参数那不就是自动绑定么。....8、总结   至此,后端一个初步重构算是完成了,文章中提到东西,大家如果有更好实践,望不吝赐教告诉,共同进步。

    1.5K40

    使用localResizeIMG3+WebAPI实现手机端图片上传

    前言 惯例~惯例~昨天发表使用OWIN作为WebAPI宿主..嗯..有很多人问..是不是缺少了什么 - - 好吧,如果你要把OWIN寄宿在其他地方...代码如下: namespace ConsoleTest...写过上传图片都知道,HTML5没出来以前,我们做上传图片预览,必须要先上传到服务器,然后由服务器反馈给客户端预览,这样..既不科学也会占用大量服务器资源....BS迅速发展今天,是时候改变了..(咳咳,装下B..)...今天我们主要内容是使用HTML5实现本地预览图片,然后使用localResizeIMG3+AJAX形式把图片传到我们昨天WebAPI~然后存在服务器....正文开始 首先我们来看看WebAPI实现代码~风格..你们懂..不解释太多,都在注释里了..

    1.3K80

    .net 温故知新【12】:Asp.Net Core WebAPIRest风格

    Rest风格中使用状态码标识返回结果,其中常用200、201、400、401、404、410、500等。...ASP.NET Core WebAPI接口 ASP.NET WebAPI中我们也能看到Rest风格,理想很丰满,显示很骨干。...而且这种方式更符合国外语言表达方式,不太适合我国宝宝体质。 所以我们设计接口时候不用非要用Rest风格,我们可以靠近或者特定更适合使用Rest接口系统中使用。...在上一篇中遗留这个问题 .net 温故知新【11】:Asp.Net Core WebAPI 入门使用及介绍 所以我们Controller中Route配置为[Controller]则不管方法接口名称是什么...; } } 最后还有[FromHeader]、[FromForm]、[FromBody]这些获取参数方式,不清楚使用时候查询就行了。

    31340

    完美解决asp.net core 3.1 两个AuthenticationScheme(cookie,jwt)共存在一个项目中

    内容 项目中有mvc controller(view 和 razor Page)同时也有webapi,那么就需要网站同时支持2种认证方式,web页面的需要传统cookie认证,webapi则需要使用...解决方案 实现web通过login页面登录,webapi 使用jwt方式获取认证,支持refreshtoken更新过期token,本质上背后都使用cookie认证方式,所以这样结果是直接导致token...http head属性或是/api确认使用cookie还是jwt chema .AddPolicyScheme(settings.App, "Bearer or Jwt", options...refreshtoken实现方式,原本规范做法是通过第一次登录返回一个token和一个唯一随机生成refreshtoken,下次token过期后需要重新发送过期token和唯一refreshtoken...,其实可以不用填入token,因为调用authenticate或refreshtoken是已经记录了cookie到客户端,所以postman测试时候都可以不用加token也可以访问

    1.2K20

    DDD实战进阶第一波(十):开发一般业务大健康行业直销系统(实现经销商登录仓储与逻辑)

    现代应用程序前后端分离实现中,通常不是将用户登录信息存储服务器端Session,因为会存在服务器Session无法传递情况,也存在WebApi调用时 无法通过Authorize Attribute...所以现代应用程序都是由服务器后端返回Token给客户端,客户端将Token存储客户端 Session中,客户端在请求后端接口时,带上Token,服务器端就能够识别客户端是否经过身份验证,而且可以直接拿到客户端身份...要实现经销商登录,主要由以下几个步骤组成。 1.实现经销商登录时信息查询仓储。 2.应用服务中,单独建立一个查询文件夹放置经销商登录查询逻辑。...3.登录WebApi中,调用应用服务查询逻辑并分发Token。...public string Value => new JwtSecurityTokenHandler().WriteToken(this.token); } 以上采用了.net core中关于OWIN使用

    35040

    DDD实战进阶第一波(十):开发一般业务大健康行业直销系统(实现经销商登录仓储与逻辑)

    现代应用程序前后端分离实现中,通常不是将用户登录信息存储服务器端Session,因为会存在服务器Session无法传递情况,也存在WebApi调用时 无法通过Authorize Attribute...所以现代应用程序都是由服务器后端返回Token给客户端,客户端将Token存储客户端 Session中,客户端在请求后端接口时,带上Token,服务器端就能够识别客户端是否经过身份验证,而且可以直接拿到客户端身份...要实现经销商登录,主要由以下几个步骤组成。 1.实现经销商登录时信息查询仓储。 2.应用服务中,单独建立一个查询文件夹放置经销商登录查询逻辑。...3.登录WebApi中,调用应用服务查询逻辑并分发Token。...public string Value => new JwtSecurityTokenHandler().WriteToken(this.token); } 以上采用了.net core中关于OWIN使用

    61160

    .net core实践系列之短信服务-Sikiro.SMS.Api服务实现

    使用标准方法更改资源状态 GET、POST、PUT、PATCH、DELETE Request和Response自描述 资源多重表述 URI所访问每个资源都可以使用不同形式加以表示(XML...对,但是GET参数URL里是受限,因此复杂参数场景下应该选择POST,然而我是模仿elasticsearch复杂查询时定义,添加多一个节点/_search申明此URI是做查询。...持久化之前做了一个分页动作,我们提供出去接口,同一条短信内容支持N个手机号,但是不同短信运营商所支持一次性发送手机数量是有限。...换句话来说我们无法保证聚合内数据一致性。 因此做法就是优先在分页成多个文档存储,那么就可以避免从数据库取出后分页导致部分成功、失败。...Swagger使用 Http协议好处是轻量、跨平台,如此良好灵活性然而需要接口描述对外暴露。Swagger是一个很好选择,不需要自己手写文档并提供后台管理界面,还可以测试,简化不少工作。

    1.5K20

    Unity3D网络通讯(一)--Asp.Net Core WebApi创建发布注意事项

    Asp.Net Core WebApi后端 ?...微卡智享 原本就是想怎么简单怎么,而且.Net Core现在升级到3.1了,不说需要完全掌握,起码也有个了解,所以觉得创建一个简单WebApi项目,把Get和Post方法一实现,主要还是写一下Unity...配置应用程序池 我们创建了一个NetCoreWebTest网站,IIS创建网站这块就不多说了。 ? 如上图,要注意点里面应用程序池中我们.Net CLR版本要改为无托管代码。...03 Json大小写问题 其实按照上面两步,基本我们IIS网站也搭建成,可以正常使用了,不过在用Unity3D调用时候发现Json反序列化时对应类值都解析不出来,搜索查了一下原因是Unity3D...项目中管理NuGet包中下载Miscrosoft.ApsNetCore.Mvc.NewtonsoftJson,这直接下最新3.1.7版本。 ?

    1.4K10

    【ASP.NET Core 基础知识】--Web API--创建和配置Web API(一)

    通过使用Web API,移动应用可以轻松地与后端服务通信,获取和更新数据,实现应用与服务器有效连接。 微服务架构: 微服务架构中,各个服务通过API进行通信。...在这里,我们使用webapi模板创建一个Web API项目。 dotnet new webapi -n YourApiName 这里-n参数用于指定项目的名称。...例如,你可以使用正则表达式确保id参数是数字,或者使用[Range]属性进行范围验证。...4.2 使用DTOs传输数据 ASP.NET Core Web API中,使用DTOs(数据传输对象)是一种常见做法,它允许你客户端和服务端之间传输数据,同时也能够控制传输数据内容。...控制器中使用DTOs: 在你控制器中使用DTO类来处理传入和传出数据。通常,API端点参数使用DTO类来接收客户端数据,同时返回结果中使用DTO类传递数据给客户端。

    82900

    【代替Swagger和Postman等工具神器】使用VS自带.http文件快速调试webapi

    http文件.NET 8环境下自带,但是处于好奇心挖掘了一下,其实这个文件和你是啥SDK环境无关、和啥开发语言也无关,纯粹就是VS2022里面附带功能。...废话不多说,下面正文: 创建webapi项目(任意.NET版本),此处用.NET6开发一个带有控制器webapi项目,用来测试使用。...控制台项目下,新建一个http文件 写第一个Get1()测试内容: @Url是自定义变量名,后面url地址接上面配置写死地址,然后编写Get访问调试命令,如果没问题,会自动弹出"发送请求"和...Post前面就用Post,Get就用Get,其他就用对应。不过需要注意是,每个用例之间,需要用###注释分割开,不然可能会识别错误,把没有分割开内容识别参数。...带实体类参数用例,并查看访问结果。需要提供必需头部信息: Content-Type 需要要调试参数,以指定格式(例如Json)在下一行直接输入。 需要空白一行输入,否则可能解析出错。

    12210

    杂(一)

    简单类型直接拼接,复杂类型属性拼接 对于 .Net Core MVC: 对于 Post 请求,不论基本类型还是复杂类型参数,调用 API 时,既可以 Query 中提交参数,也可以使用 x-www-form-urlencoded...我们也不该在 Get 请求使用复杂类型放在 Body 中提交 对于 .Net Framework API: 对于 Post 请求: 如果是简单类型参数,调用 API 时,默认是 Query 中提交参数...如果是简单类型参数,调用 API 时,默认是 Query 中提交参数,如果有[FromBody] attribute 修饰参数,则需要以 application/json 形式提交参数。...形式提交数据,与使用[FromBody] attribute 修饰符一致。...输出 .Net Core WebAPI 默认是 JSON 输出,而 .Net Framework WebAPI 默认是 XML 输出。

    69820
    领券