上篇文章,我们试着调用API,成功返回值,今天接下来看看代码是怎么构成的

  1. [Route("api/[controller]")]
  2. [ApiController]
  3. public class TodoController : ControllerBase
  4. {
  5. private readonly TodoContext _context;
  6.  
  7. public TodoController(TodoContext context)
  8. {
  9. _context = context;
  10.  
  11. if (_context.TodoItems.Count() == )
  12. {
  13. // Create a new TodoItem if collection is empty,
  14. // which means you can't delete all TodoItems.
  15. _context.TodoItems.Add(new TodoItem { Name = "Item1" });
  16. _context.SaveChanges();
  17. }
  18. }
  19.  
  20. // GET: api/Todo
  21. [HttpGet]
  22. public ActionResult<IEnumerable<TodoItem>> GetDataList()
  23. {
  24. return _context.TodoItems.ToList();
  25. }
  26. [HttpPost]
  27. public IActionResult Create( TodoItem item)
  28. {
  29. if (item == null)
  30. {
  31. return BadRequest();
  32. }
  33.  
  34. _context.TodoItems.Add(item);
  35. _context.SaveChanges();
  36.  
  37. return CreatedAtRoute("GetTodo", new { id = item.Id }, item);
  38. }
  39. [HttpPut("{id}")]
  40. public IActionResult Update(long id, [FromBody] TodoItem item)
  41. {
  42. if (item == null || item.Id != id)
  43. {
  44. return BadRequest();
  45. }
  46.  
  47. var todo = _context.TodoItems.FirstOrDefault(t => t.Id == id);
  48. if (todo == null)
  49. {
  50. return NotFound();
  51. }
  52.  
  53. todo.IsComplete = item.IsComplete;
  54. todo.Name = item.Name;
  55.  
  56. _context.TodoItems.Update(todo);
  57. _context.SaveChanges();
  58. return new NoContentResult();
  59. }
  60. [HttpDelete("{id}")]
  61. public IActionResult Delete(long id)
  62. {
  63. var todo = _context.TodoItems.FirstOrDefault(t => t.Id == id);
  64. if (todo == null)
  65. {
  66. return NotFound();
  67. }
  68.  
  69. _context.TodoItems.Remove(todo);
  70. _context.SaveChanges();
  71. return new NoContentResult();
  72. }
  73. // GET: api/Todo/5
  74. [HttpGet("{id}")]
  75. public async Task<ActionResult<TodoItem>> GetTodoItem(long id)
  76. {
  77. var todoItem = await _context.TodoItems.FindAsync(id);
  78.  
  79. if (todoItem == null)
  80. {
  81. return NotFound();
  82. }
  83.  
  84. return todoItem;
  85. }
  86. }

首先我们的方法都写在Controller里面,这个Controller必须继承基类 ControllerBase

每个暴露给外面的接口方法都是public ,为了表明方法是post 或Get, 在方法的上面标注[HttpPost]或[HttpGet],这是一种约定,这是一种规范。

在这里有两个注意点.如果方法不标注,则Get和Post方法都支持,但是同时只能有一个对外开放的方法不标注

下面我们来验证下结论,方法不标注用Get方法调用

看,虽然HTTPGet注释了,但是方法还是成功的被调用

同样的 post 方法也能成功调用

为啥只能有一个API方法可以不标注,如果本来就已经标注了Get方法,不标注的方法还可以是Get方法吗?如果我们要有2个以上get方法是否可以,带着这些疑问,我们下篇文章再来验证。

聊聊 .net Core webAPi 的Get和POST 相关(1)的更多相关文章

  1. .Net Core WebAPI 基于Task的同步&异步编程快速入门

    .Net Core WebAPI 基于Task的同步&异步编程快速入门 Task.Result async & await 总结 并行任务(Task)以及基于Task的异步编程(asy ...

  2. asp.net core webapi之跨域(Cors)访问

    这里说的跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据.只要协议.域名.端口有任何一个不同,都被当作 ...

  3. ASP.NET Core WebAPI 开发-新建WebAPI项目

    ASP.NET Core WebAPI 开发-新建WebAPI项目, ASP.NET Core 1.0 RC2 即将发布,我们现在来学习一下 ASP.NET Core WebAPI开发. 网上已经有泄 ...

  4. Asp.net Core WebApi 使用Swagger做帮助文档,并且自定义Swagger的UI

    WebApi写好之后,在线帮助文档以及能够在线调试的工具是专业化的表现,而Swagger毫无疑问是做Docs的最佳工具,自动生成每个Controller的接口说明,自动将参数解析成json,并且能够在 ...

  5. AngularJS 2调用.net core WebAPI的几个坑

    前几天,按照AngularJS2的英雄指南教程走了一遍,教程网址是http://origin.angular.live/docs/ts/latest/tutorial/. 在步骤完成后,又更进一步,在 ...

  6. Asp.Net Core WebApi学习笔记(四)-- Middleware

    Asp.Net Core WebApi学习笔记(四)-- Middleware 本文记录了Asp.Net管道模型和Asp.Net Core的Middleware模型的对比,并在上一篇的基础上增加Mid ...

  7. Net Core WebAPI

    Net Core WebAPI .Net Core WebAPI 基于Task的同步&异步编程快速入门 Task.Result async & await 总结 并行任务(Task)以 ...

  8. Asp.net core WebApi 使用Swagger生成帮助页

    最近我们团队一直进行.net core的转型,web开发向着前后端分离的技术架构演进,我们后台主要是采用了asp.net core webapi来进行开发,开始每次调试以及与前端人员的沟通上都存在这效 ...

  9. ASP.Net Core WebApi几种版本控制对比

    版本控制的好处: (1)助于及时推出功能, 而不会破坏现有系统. (2)它还可以帮助为选定的客户提供额外的功能. API 版本控制可以采用不同的方式进行控制,方法如下: (1)在 URL 中追加版本或 ...

随机推荐

  1. 【分布式搜索引擎】Elasticsearch之开启Elasticsearch的用户名密码验证

    一.首先在elasticsearch配置文件中开启x-pack验证, 修改config目录下面的elasticsearch.yml文件,在里面添加如下内容,并重启 xpack.security.ena ...

  2. 1-22Python练习题1-1

      Python¶   (一)四个数字:1.2.3.4,组成多少个互不相同且无重复数字的三位数?各是多少? In [1]: b=[] for i in range(1,5): for j in ran ...

  3. 使用ruamel.yaml库,解析yaml文件

    在实现的需求如下: 同事提供了一个文本文件,内含200多个host与ip的对应关系,希望能在k8s生成pod时,将这些对应关系注入到/etc/hosts中. 网上看文档,这可以通过扩充pod中的hos ...

  4. python requests访问https的链接,不打开fiddler的情况下不报错;若是打开fiddler则报ssl错误,请求中添加verify=False,会报警告;若不想看到警告,有3种方式;

    import requests# import warnings# warnings.filterwarnings("ignore") #方法一#requests.packages ...

  5. 破解Beyond Compare 4

    Beyond Compare 4 30天试用期后,破解方法. 方法一:在安装目录下找到文件BCUnrar.dll,比如:D:\software\Beyond Compare 4,重命名该文件即可. 重 ...

  6. HDFS 分布式文件系统

    博客出处W3c:https://www.w3cschool.cn/hadoop/xvmi1hd6.html 简介 Hadoop Distributed File System,分布式文件系统 架构 B ...

  7. JDOJ 2255 A+B Problem

    JDOJ 2255: A+B Problem https://neooj.com/oldoj/problem.php?id=2255 Description Solve A+B problem wit ...

  8. 每天一道Rust-LeetCode(2019-06-11)

    每天一道Rust-LeetCode(2019-06-02) Z 字形变换 坚持每天一道题,刷题学习Rust. 题目描述 全排列 II 给定一个可包含重复数字的序列,返回所有不重复的全排列. 示例: 输 ...

  9. 你真的了解FastClick吗?

    你真的了解FastClick吗? 前段时间在做公司官网手机端菜单部分的时候,遇到一些很诡异的点击问题.比如菜单点击无效/双击才有效.在手指滑动的时候会触发点击事件.以及同样的事件处理在微信跟浏览器会有 ...

  10. Spring Cloud微服务安全实战_3-5_API安全之常见问题

    1,数据校验,解决接口层的参数校验,是api安全的前线.可以用JSR303注解进行接口层面的校验 ,参考文章:https://www.ibm.com/developerworks/cn/java/j- ...