get、post、put、delete,获取资源使用get,新增资源使用post,整体更新使用put,删除资源使用delete在web API开发中,有两种风格:面向过程(RPC)和面向REST
通过“控制器/操作方法”的形式来调用服务端的方法,也就是把服务端的代码当做了方法调用。这种风格的接口可能会用POST处理所有的操作方法(无论是新增、获取、还是删除)。在这样的接口中,通过QueryString或者请求报文来为服务器传递数据,只要是服务端能够正常完成客户端的请求,服务端统一返回200的http状态码,对于逻辑上的错误,同样返回200,只不过会在响应报文中不同的错误码来表示。
示例:
| 需求 | 地址 | HTTP谓词 |
|---|---|---|
| 获取所有用户 | /Person/GetAll | GET |
| 获取Id=8的用户 | /Person/GetById?id=8 | GET |
| 更新Id=8的用户 | /Person/Update | Post |
| 新增用户 | /Person/AddNew | Post |
| 删除id=8的用户 | /Person/DeleteById?id=8 | Post |
其中,更新、新增用户等操作要将用户信息以JSON格式放到请求报文中
由此可见,RPC的URL中包含以名词形式描述的资源(Person)和以动词形式描述的动作(GetAll)
每个控制器都是对一类资源的操作的集合,每个操作方法都被不同的HTTP谓词触发
[Route("api/[controller]")]
public class PersonsController : ControllerBase
{
[HttpGet]
public IEnumerable<Person> GetPersons();
[HttpGet("{id}")]
public Person GetPersons(long id);
[HttpPut("{id}")]
public void UpdatePerson(long id,Person person);
[HttpPost]
public void SavePerson(Person person);
[HttpDelete("{id}")]
public void DeletePerson(long id);
}
| 需求 | 调用方法 | 地址 | HTTP谓词 |
|---|---|---|---|
| 加载所有用户 | 添加了[HttpGet]的GetPersons方法 | /api/Persons | Get |
| 获取Id=8的用户 | 添加了[HttpGet(“{id}”)]的GetPersons方法 | /api/Persons/8 | Get |
| 更新Id=8的用户 | 添加了 [HttpPut(“{id}”)]的UpdatePerson方法 | /api/Persons/8 | Put |
| 新增用户 | 添加了 [HttpPost]的SavePerson方法 | /api/Persons | Post |
| 删除id=8的用户 | 添加了 [HttpDelete(“{id}”)]的DeletePerson方法 | /api/Persons/8 | Delete |
其中新增用户信息以JSON格式放在请求报文中,在Restful风格中,URL中的单词都是名词,动作通过HTTP谓词来表述
person/class/8/age/18给服务器传递参数的3中形式:URL、QueryString、请求报文体,只有put、post支持请求报文体
Web Api参数传递建议: