概要描述
在NetCore中FromBody、FromForm、FromHeader、FromQuery、FromRoute这些特性如何使用,怎么配合前端,这里做详细的说明
| 特性 |
绑定源 |
| FromBody |
请求正文 |
| FromForm |
请求正文中的表单数据 |
| FromHeader |
请求标头 |
| FromQuery |
请求查询字符串参数 |
| FromRoute |
当前请求中的路由数据 |
| FromServices |
作为操作参数插入的请求服务 |
前端Content-Type类型介绍
application/x-www-form-urlencoded(默认)
发送信息至服务器时内容编码类型。默认值适合大多数情况。如果你明确地传递了一个content-type给 $.ajax() 那么他必定会发送给服务器(即使没有数据要发送)
multipart/form-data
是一种专门用于提交包含二进制数据(如文件上传)的表单数据格式
application/json
是用于在客户端和服务器之间传输 JSON,以键值对出现例:{key:value},[{},{}]
前端Method类型介绍
| 前端 HTTP 方法 |
后端 .NET Core 特性 |
主要用途 |
典型状态码 |
安全 |
幂等 |
缓存 |
| GET |
[HttpGet] |
查询 / 读取资源 |
200 OK, 404 Not Found |
✅ |
✅ |
✅ |
| POST |
[HttpPost] |
创建资源 |
201 Created, 400 Bad Request |
❌ |
❌ |
❌ |
| PUT |
[HttpPut] |
全量更新 / 替换资源 |
204 No Content, 404 Not Found |
❌ |
✅ |
❌ |
| PATCH |
[HttpPatch] |
部分更新资源 |
204 No Content, 404 Not Found |
❌ |
❌ |
❌ |
| DELETE |
[HttpDelete] |
删除资源 |
204 No Content, 404 Not Found |
❌ |
✅ |
❌ |
| OPTIONS |
[HttpOptions] |
获取通信选项 |
200 OK |
✅ |
✅ |
❌ |
| HEAD |
[HttpHead] |
获取资源头信息 |
200 OK, 404 Not Found |
✅ |
✅ |
✅ |
| TRACE |
(通常禁用) |
回显请求数据 |
200 OK |
✅ |
✅ |
❌ |
1.默认特性
| 前端请求Body参数类型 |
前端请求contentType类型 |
服务端接口方法示例 |
状态 |
| json |
Ajax默认不填写 |
Create(object req) |
200 |
| All |
application/x-www-form-urlencoded |
Create(object req) |
415 |
| json |
application/json |
Create(object req) |
200 |
注:application/x-www-form-urlencoded在前端实际是默认类型,但是你填写反而测试都没有通过
2.FromFrom特性
| 前端请求Body参数类型 |
前端请求contentType类型 |
服务端接口方法示例 |
状态 |
| form-data |
Ajax默认不填写 |
Create([FromForm]object req) |
200 |
| x-www-form-urlencoded |
Ajax默认不填写 |
Create([FromForm]object req) |
200 |
| x-www-form-urlencoded |
application/x-www-form-urlencoded |
Create([FromForm]object req) |
200 |
3.FromBody特性
| 前端请求Body参数类型 |
前端请求contentType类型 |
服务端接口方法示例 |
状态 |
| json |
Ajax默认不填写 |
Create([FromBody]object req) |
200 |
| json |
application/json |
Create([FromBody]object req) |
200 |
4.FromQuery特性
| 前端请求Body参数类型 |
前端请求contentType类型 |
服务端接口方法示例 |
状态 |
| Query |
Ajax默认不填写 |
Create([FromQuery]object req) |
200 |
| Query |
application/x-www-form-urlencoded |
Create([FromQuery]object req) |
200 |
| Query |
application/json |
Create([FromQuery]object req) |
200 |