概要描述

在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