美文网首页
Web API 整理 - “restful风格”

Web API 整理 - “restful风格”

作者: 徐曼曼_b287 | 来源:发表于2020-02-20 00:45 被阅读0次
    1. Web API的方便之处
      返回类型如果未对象,会自动返回json格式,节省流量,更简洁

    2. Web API和MVC的区别
      Web API 无界面,用户不会直接接触WebAPI

    3. 什么是RestFul?
      1)首先得说一下MVC接口设计:
      提供一个HTTP接口,例如删除id=3的用户,接口:https://localhost:44352/Person/Delete/3
      基本格式是controller/action/id
      服务器返回一个json对象,成功:{status="ok",data:{"id":3}},失败:{status="idnotfound",msg="id没找到"}
      这些返回结果都是前后端约定好的,前端做特定解析
      于是,有些老学究就说了:这不符合“HTTP谓词语义”
      2)那么什么是“HTTP谓词语义”?
      web时代使得MVC模式得以推广,而接口时代“HTTP谓词语义”又被重用
      “HTTP谓词语义”认为所有操作都可以转化为增删改查,优势:
      (1)不需要解析返回值,无需约定返回报文格式,直接通过HTTP状态码来判断
      (2)不需要Action的名字,只看请求类型就可以判断要做什么样的操作(post、get、delete等)
      (3)对于不同类型的请求可以做不同的权限控制
      (4)有利于系统优化,浏览器可以自动缓存GET请求
      (5)Get没有副作用,是幂等的,可以重试
      3)restful究竟是啥?
      如果接口按照“HTTP谓词语义”设计,那么这个接口就是“restful风格”,遵循Rest标准

    然鹅:纯“restful风格”太难搞,大部分公司都无法严格遵守,因此尽可能遵守,不要求极致

    1. WebAPI 分析:
    • WebAPI的Controller从APIController继承
    • WebAPI的Action返回值一般不写ActionResult,而是直接给出返回类型
    • WebAPI路径不是/controller/Action的形式
    • Action中如果有调用异步方法,那么是要吧action生命诚async、返回值搞成Task<>就好了
    1. 为啥action名字不起作用?
      因为WebAPI的默认路由是“api/{controller}/{id}”,此时服务器只根据请求的类型来找到对应方法,如post、get、delete等,根据请求参数去定位

    2. 那如何让action有用啊?不想完全遵守“restful风格”
      把路径改为“api/{controller}/{action}/{id}”,就可以通过路径访问具体action了
      这时候就和MVC基本相同:
      1)Action方法不能重载,除非通过[HTTPPOST][HTTPGET]来标注
      2)尽量不要使用以上两种方法以外的标注
      3)强制要求方法都标注[HTTPPOST][HTTPGET]

    相关文章

      网友评论

          本文标题:Web API 整理 - “restful风格”

          本文链接:https://www.haomeiwen.com/subject/ddhtqhtx.html