码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Web Api的两种风格,实战的建议 / 附:ABP中的处理


    1.面向过程

    RPC:“控制器/操作方法“的形式把服务器端的代码当成方法去调用。把HTTP当成传输数据的通道,不关心HTTP谓词。通过QueryString、请求报文体给服务器传递数据。状态码。比如:/Persons/GetAll、/Persons/GetById?id=8、/Persons/Update、/Persons/DeleteById/8;

    2.面向REST

    按照HTTP的语义来使用HTTP协议:

    URL用于资源的定位:/user/888、/user/888/orders;

    HTTP谓词:GET、POST(新增)、PUT(整体更新)、DELETE、PATCH(局部更新)等;

    (啥时候用put?一次性跟新十个数据,啥时候用patch,更新十个数据里面2个时候)

    什么是“幂等”,举例?DELETE、PUT、GET是幂等的,POST不幂等;

    GET的响应可以被缓存;

    5、

    1、完全按照HTTP语义要求高。

    2、我的建议:

    1)对于保存、更新类的请求POST、PUT请求,把全部参数都放到请求报文体中;

    2)对于DELETE请求,要传递的参数就是一个资源的id,因此把参数放到QueryString中即可;

    3)对于GET请求,一般参数的内容都不会太长,因此统一通过QueryString传递参数就可以。对于极少数参数内容超过URL限制的请求,由于GET、PUT请求都是幂等的,因此我们把请求改成通过PUT请求,然后通过报文体来传递参数。

    服务器端要通过状态码来反映资

    1、对于数据库服务器连接失败、请求报文格式、服务器端异常等非业务错误,服务器端应该返回4xx、5xx等状态码。

    2、对于业务层面的错误,比如用户不存在,我们要使用4xx等HTTP状态码返回。同样在响应报文体中给出详细的错误信息,比如{“code”:3,”message”:”用户不存在”}。

    3、不仅要返回4xx的HTTP状态码,而且不要忘了通过响应报文体给出详细的错误信息。对于用户不存在,不仅要404,而且把响应报文体设置为{“code”:3,”message”:”用户名已存在”},这样能区分出来是哪里的问题。

    源获取的结果:404、403(没有权限)、201(新增成功)。

    重点看一下红字部分,需要对错误写出详细信息,看一下ABP项目中是如何对错误进行处理的.

    1. if (xxxxxxxxxxxxxxxxxxxxxx)
    2. {
    3. throw new ConditionException(fuckErrorCodes.nofuckUser);
    4. }

     新建一个类来定义错误状态. 具体实现看一下官方文档。

    Exception Handling | Documentation Center | ABP.IOABP提供了用于处理Web应用程序异常的标准模型.https://docs.abp.io/zh-Hans/abp/5.3/Exception-Handling

  • 相关阅读:
    38.迪杰斯特拉(Dijkstra)算法
    路飞项目多方式登录、手机号短信验证注册接口
    JVM内存设置
    契约锁助力青岛市市立医院:报销、核酸检测及经济类合同电子签
    Redisson分布式锁实战
    数据库视图的基本操作(sql语句)
    VectorDraw web library JS 10.1004.1.0 Crack
    MyBatis select标签的简介说明
    Word控件Spire.Doc 【文本】教程(14) ;如何用图片替换Word中的文字
    如何通过日志恢复被删除的数据
  • 原文地址:https://blog.csdn.net/dongnihao/article/details/126558030
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号