首页
学习
活动
专区
圈层
工具
发布

使用DDD来构建你的REST API,而不是CRUD

当然,并不是说你必须使用DDD来设计你的REST,但是,由于REST资源可以很好地映射到DDD实体,因此我发现设计REST API特别适合使用DDD。 那么这是什么意思?...现在我们知道我们的业务操作是什么了,下面是将它们映射到REST API的一个例子: 1. POST /account – 开户 2....GET/account/ - 通过其帐户ID加载单个帐户。 6. GET /account//transactions- 列出帐户的交易记录。...在客户端,将变得更加的明确,什么操作可以执行,什么操作不可以执行。如果API文档记录的很好的话,例如使用Swagger来定义文档,那么每个API的限制(或约束)将变得非常明确。...因此不应该按照CRUD模型来构建你的serviceAPI(REST 或其他),而应该是使用DDD,DDD可以根据领域对象和可对其执行的业务操作来定义API。

2.9K50

flask 应用程序编程接口(API)最后一节

为了让你了解REST论文中的内容,以下各节将介绍 Fielding的六项原则。 客户端-服务器 客户端-服务器原则相当简单,预计其字面含义,在REST API中,客户端和服务器的角色应该明确区分。...这意味着,在Web开发中常见的在无状态API中,每个请求都需要包含服务器需要识别和验证客户端并执行请求的信息。这也意味着服务器无法在数据库或其他存储形式中存储与客户端连接有关的任何数据。...如果你想知道为什么REST需要无状态服务器,本质上是无状态服务器非常容易扩展,你只需在负载均衡器后面运行多个服务器实例即可。...GET请求表示客户想要检索资源信息,POST请求表示客户想要创建新资源,PUT或PATCH请求定义对现有资源的修改,DELETE表示删除资源的请求。...API中没有HTML或登录页面的概念,如果客户端发送带有无效或所有权凭证的请求,服务器必须拒绝请求并返回401状态码。

6.2K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Ceph:关于 Ceph 用户创建认证授权管理的一些笔记

    对于Ceph对象网关,安装会创建一个专用的client.rgw.hostname用户帐号,在 librados 之上创建定制软件的开发人员应该创建具有适当功能的专用帐户 client.rgw.realm.zone.serverc.bdiyfs...client.rgw.hostname 用于访问集群的帐号 配置用户授权 创建新用户帐户时,授予集群权限,以授权用户的集群任务,cephx 中的权限被称为 能力,可以通过守护进程类型(mon、osd、mgr...要获取特定帐户的详细信息,使用ceph auth get命令: [ceph: root@node /]# ceph auth get client.admin exported keyring for...和class-write 是x的子集,你通常在 RBD 池中使用它们 * 授予完全访问权 创建了 formyappl 用户帐户,并赋予了从任意池中存储和检索对象的能力: [ceph: root@node...提供 预定义的功能配置文件,在创建用户帐户时,利用配置文件简化用户访问权限的配置 本例通过 profile rbd 定义新的 forrbd 用户帐号的访问权限,客户端应用程序可以使用该帐户使用 RADOS

    2.2K20

    java工程师用spring boot和web3j构建以太坊区块链应用

    现在,让我们创建一些其他的测试帐号,并做一些检查。为了实现这一点,我们需要在容器内部运行Geth的交互式JavaScript控制台。...现在,我们必须创建一些测试帐号。我们可以通过调用personal.newAccount(password)函数来实现这一点。...然后每10笔交易发送者的帐户收到一次奖金(bonus)。这里的图表说明了一个我们的demo的系统架构。 ? 4.spring boot应用程序使用web3j 我想现在我们清楚了我们到底想做什么。...首先,我们应该包括所有必需的依赖项,以便能够在Spring boot应用程序中使用web3j库。幸运的是,有一个starter可以使用。...在发送任何交易之前,你应该解锁发送人帐户。

    2.1K10

    我所了解的内网渗透 - 内网渗透知识大总结

    它由服务类,主机名和端口组成。在使用Kerberos身份验证的网络中,必须在内置计算机帐户(如NetworkService或LocalSystem)或用户帐户下为服务器注册SPN。...域控制器(KDC)检查用户信息(登录限制,组成员身份等)并创建票证授予票证(TGT)。 TGT被加密,签名并交付给用户(AS-REP)。...使用目标服务帐户的NTLM密码散列对TGS进行加密并发送给用户(TGS-REP)。 用户在适当的端口上连接到托管服务的服务器并呈现TGS(AP-REQ)。该服务使用其NTLM密码散列打开TGS票证。...其实可以说是一种后门而不是什么漏洞。 黄金票据是伪造TGT,可以获取任何Kerberos的服务权限,与域控制器没有AS-REQ或AS-REP(步骤1和2)通信。...(通常为计算机账户)Hash加密 认证流程不同: Golden Ticket在使用的过程需要同域控通信 Silver Ticket在使用的过程不需要同域控通信 用户在适当的端口上连接到托管服务的服务器并呈现

    5.1K50

    RESTful API

    一般来说,数据库中的表都是同种记录的"集合"(collection),所以API中的名词也应该使用复数。...GET(SELECT):从服务器取出资源(一项或多项)。即获取数据 POST(CREATE):在服务器新建一个资源。...下面是一些例子: GET /zoos:列出所有动物园 POST /zoos:新建一个动物园 GET /zoos/ID:获取某个指定动物园的信息 PUT /zoos/ID:更新某个指定动物园的信息(提供该动物园的全部信息...200 OK - [GET]:服务器成功返回用户请求的数据,该操作是幂等的(Idempotent)。 201 CREATED - [POST/PUT/PATCH]:用户新建或修改数据成功。...400 INVALID REQUEST - [POST/PUT/PATCH]:用户发出的请求有错误,服务器没有进行新建或修改数据的操作,该操作是幂等的。

    2.2K20

    TF Analytics指南丨“分析”哪些内容?如何发出“警报”?

    该数据库通过类似SQL的语言和表示状态转移(REST)API进行查询。 分析节点收集到的系统状态信息将汇总到所有的节点上。 分析节点收集的调试信息包括以下几种类型。...与流量、CPU和内存使用情况等相关的统计信息也由分析节点收集,并可进行查询以提供历史分析和时间序列信息。查询使用REST APIs进行。 分析数据会被写入到Tungsten Fabric的数据库。...作为UVE GET APIs的一部分,读取对警报的访问。 使用POST请求进行警报确认。 使用服务器发送的事件(SSE)进行UVE和警报流。...警报是在每个UVE的基础上发出的,可以通过在UVE上的GET来检索。 ack表示警报是否已被确认。 token用于客户端的请求确认。...Client服务器是Service Monitor和Contrail Command,后者通过REST API端口连接到分析API服务器。

    1.6K00

    域内提权之sAMAccountName欺骗

    ,例如域控制器计算机帐户,Charlie Clark是第一个通过发布详细文章说明如何将这些漏洞武器化的人 在请求服务票证之前需要首先签发票证授予票证(TGT),当为密钥分发中心 (KDC)中不存在的帐户请求服务票证时...属性恢复为其原始值或任何其他值 使用S4U2self方法请求服务票证 代表域管理员帐户接收服务票证 下图说明了sAMAccountName模拟技术的步骤: 漏洞发现 Microsoft已发布补丁以防止成功利用...0 需要访问内部网络,因此假设低权限帐户已被盗用,如上所述,机器帐户配额默认为10,因此唯一的要求是确定是否已应用补丁,这是微不足道的,可以通过为域用户帐户请求没有PAC的票证授予票证并观察base64...可以使用由Cube0x0开发的C#工具noPac直接从内存中自动复制 sAMAccountName欺骗的步骤,执行以下命令将创建一个具有指定密码的机器帐户,并获得cifs服务的服务票证,该票证将被传递到内存中...对易受攻击的域控制器执行以下命令将创建一个具有随机密码的机器帐户,以获得票证授予票证,然后机器帐户名称将重命名并使用S4U2self为属于域管理员组的管理员用户检索并保存在本地的服务票证 python3

    1.5K10

    REST API 设计最佳实践:如何构建、设计和使用 API ?

    (操作或方法):最常见的是GET、POST、PUT、PATCH和DELETE。...使用复数名词表示资源 我们应该使用 /book/:id/ (单数) 还是 /books/:id/ (复数)?我个人建议使用复数形式。为什么?因为它非常适合所有类型的端点。...例如,如果你选择某个POST端点返回201 Created,那么对于每个POST端点都应使用相同的HTTP状态码。为什么?因为消费者不应该担心在哪种情况下哪个方法在哪个端点上会返回哪个状态码。...不要嵌套资源 您可能已经注意到,REST API处理的是资源。检索资源列表或单个实例非常简单,但是,当处理相关资源时会发生什么呢?例如,假设我们想要检索特定作者(名为Cagan)的书籍列表。...您的用户可能希望检索满足特定条件的项目,或者一次只检索少量数据以提高性能,这正是过滤和分页功能所设计的目标。 通过过滤,消费者可以指定返回项目应具有哪些参数(或属性)。分页允许用户逐步获取数据集。

    2.2K40

    RESTful API 设计与实现:C# 开发者的一分钟入门

    本文将从零开始,逐步介绍如何使用 C# 设计并实现一个简单的 RESTful API。什么是 RESTful API?...RESTful API 是基于 HTTP 协议构建的,它强调资源的概念,并通过不同的 HTTP 方法(如 GET、POST、PUT 和 DELETE)来操作这些资源。...REST 的核心原则无状态:每次请求都包含所有必要的信息。客户端-服务器:明确区分了客户端和服务端的角色。缓存:允许客户端缓存响应数据。统一接口:通过一组定义良好的接口进行交互。...HTTP 方法选择使用 GET 来检索信息。使用 POST 来创建资源。使用 PUT 来更新资源。使用 DELETE 来删除资源。...错误处理:当请求失败时,应该返回一个包含错误信息的 JSON 对象。安全性:考虑使用 HTTPS 加密通信,以及实现身份验证和授权机制。性能优化:通过缓存、分页等技术提高 API 的性能。

    1.4K10

    敏捷测试价值观、方法和实践读书笔记(8)

    SOAP 是有状态的协议,所有请求和响应都是通过 XML 同时进行的,没有像 REST 服务那样显式地提供 GET、PUT、POST 或 DELETE 等方法。...GET:此方法用来检索使用 PUT 或 POST 等任何方法发送到 Web 服务端的信息。此方法没有请求主体,执行成功后会得到响应状态码 200。...POST:此方法用于请求主体、指定 URL、文档键、上下文键等创建文档或记录到 Web 服务端,使用 GET 方法来检索 POST 到 Web 服务端的内容,执行成功后会得到响应状态码 201。...通常 SOAP 服务比 REST 服务更安全,虽然 SOAP 服务和 REST 服务都可以使用SSL 加密,但是除了 SSL,SOAP 服务还提供 WSS 加密。...通过网络服务接口调用是唯一允许的通信方式。 使用什么技术并不重要。无论是 HTTP、CORBA、PubSub,还是自定义协议,都不重要。

    38310

    5个REST API安全准则

    REST允许通过简单的URL(而不是复杂的请求主体或POST参数)与基于web的系统交互。...4 - 加密 (1)传输中的数据 除非公共信息是完全只读的,否则应强制使用TLS,特别是在执行凭证更新、删除和任何事务操作时。...当设计REST API时,不要只使用200成功或404错误。 以下是每个REST API状态返回代码要考虑的一些指南。 正确的错误处理可以帮助验证传入的请求,并更好地识别潜在的安全风险。...200 OK -回应一个成功的REST API的行动。HTTP方法可以是GET,POST,PUT,PATCH或DELETE。 400错误请求 -请求格式错误,如消息正文格式错误。...一些方法(例如,HEAD,GET,OPTIONS和TRACE)被定义为安全的,这意味着它们仅用于信息检索,并且不应该更改服务器的状态。在设计和构建REST API时,您必须注意安全方面。

    5.1K10

    程序员疫苗:代码注入

    在应用程序链接数据库时使用权限过大的帐户(如:很多开发人员都喜欢用sa(最高权限的系统管理员帐户)连接Microsoft SQL Server数据库)。...经由数据库服务器提供的操作系统支持,让黑客得以修改或控制操作系统(例如:MS SQL Server的 xp_cmdshell “net stop iisadmin”可停止服务器的IIS服务)。...现在的黑客比较坏,瘫痪系统的事,他们干的越来越少,因为没什么利益,他们希望通过获取用户的帐号信息后,转而攻击用户别的帐号,如游戏帐号,网银帐号,QQ帐号等等他们可以获利的事情(这就是为什么我希望大家在不站点上使用不同的口令...如果可能应该过滤以下字符:分号“;”,两个减号“–”,单引号“’”,注释“/* … */”。(当然,因为注入攻击一般用闭合的引号来玩,所以把引号转义了应该就没有什么问题了) 更换危险字符。...它通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。

    97540

    理解GET和POST区别的全面指南

    在使用API时,两个最常用的HTTP方法是GET和POST。那么这两者究竟有什么区别呢?在本文中,我们将澄清GET和POST之间的区别,重点介绍它们的独特属性和适用的用例。...客户端可以利用服务器的功能,服务器则响应客户端的请求,构成了API交互的核心。在这个框架中,GET和POST HTTP方法定义了服务器应该如何处理请求以及它应该返回的响应格式。什么是GET和POST?...在理解了REST API的基础之后,让我们来定义GET和POST:GETGET是一种HTTP方法,用于从指定的服务器请求数据。通过使用GET方法,客户端可以基于请求中发送的参数检索信息。...GET的常见用例包括:搜索用户信息(例如,姓名、地址、电话号码)获取地理位置的详细信息在各种数据集中执行搜索POSTPOST是另一种HTTP方法,主要用于向指定服务器发送数据,以创建或更新资源。...安全性的区别GET:请求参数包含在URL中,相对不安全。POST:数据通过请求体传输,通常被认为更安全。使用场景的区别GET:常用于数据获取。POST:常用于数据提交或处理请求。

    56710

    云开发API连接器的最佳练习

    鼓励服务提供商和其他读者更新其云端的API端点,以便作为开发人员的简单参考。 API操作 通过API文档了解您的平台支持的API操作,并确定您想要使用的操作。...如果它是一个REST API,那么它包括一个访问密钥和一个普通密钥。可以通过使用POSTMAN,RESTClient等工具验证平台或服务的API端点进行访问。...引用 云平台/服务可通过用户的帐户使用的资源增加限额。最好先了解配额限制。例如,AWS将帐户弹性IP的分配限制为5。但是,这可以通过提出请求来增加。...对于一些异步API(API响应不是即时的),响应通过PUSH提供或通过POLL检索。'Push'模型需要一个回调端点,当它可用时,它会发送响应。...一些云服务提供商/平台为每个要使用的服务开设不同的端点。建议使用API端点维护一个服务目录,以确保使用正确的服务目录。 有时端点根据云平台或服务的子帐户而有所不同。

    5.3K80

    【linux命令讲解大全】123.SSH-Add和Useradd:管理用户和密钥的Linux命令

    useradd可用来建立用户帐号。帐号建好之后,再用passwd设定帐号的密码,而可用userdel删除帐号。使用useradd指令所建立的帐号实际上是保存在/etc/passwd文本文件中。...如果未指定此选项,useradd将使用/etc/default/useradd中的HOME变量指定的基本目录,或默认使用/home。...-o, --non-unique:允许创建具有重复(非唯一)UID的用户帐户。此选项仅与-o选项结合使用时有效。 -p, --password PASSWORD:指定加密密码。...密码使用crypt(3)加密并返回。默认禁用密码。 -r, --system:创建一个系统帐户。 -s, --shell SHELL:指定用户登录的shell名称。...文件 /etc/passwd:用户帐户信息。 /etc/shadow:保护用户帐户信息。 /etc/group:组帐户信息。 /etc/gshadow:保护组帐户信息。

    67110

    REST API 最佳实践

    客户端(前端)和服务器(后端)之间的通信通常不是超级直接的。因此,我们使用一个叫作“应用编程接口”(或 API)的接口,作为客户端和服务器之间的中介。...在这篇文章中,我将带你了解创建 REST API 时需要遵循的一些最佳实践。这将帮助你创建最好的 API,并使你的 API 用户使用起来更容易。 0.什么是 REST API?...任何遵循 REST 设计原则的 API 都被称为 RESTful API。 简单地说,REST API 是两台计算机通过 HTTP(超文本传输协议)进行通信的媒介,与客户端和服务器的通信方式相同。...这就是为什么你的集合应该使用复数的名词。 所以,不应该是 https://mysite.com/post/123,而是 https://mysite.com/posts/123。...如果发生这种情况,从这样的数据库中检索数据可能非常缓慢。 过滤、排序和分页都是可以在 REST API 的集合上执行的操作。这样只能检索、排序和排列必要的数据,并将其分页,以防服务器请求过载。

    2.8K20

    详细到没朋友,一文帮你理清Linux 用户与用户组关系~

    在 passwd 文件中,一行定义一个用户帐号,每行均由多个不同的字段构成,各字段值间用 ":” 分隔,每个字段均代表该帐号某方面的信息。...在刚安装完成的 linux 系统中,passwd 配置文件已有很多帐号信息了,这些帐号是由系统自动创建的,他们是 linux 进程或部分服务程序正常工作所需要使用的账户,这些账户的最后一个字段的值一般为...userdel 命令来实现,其用法为: userdel [-r] 帐户名 -r 为可选项,若带上该参数,则在删除该账户的同时,一并删除该账户对应的主目录。...[root@localhost ~]# userdel -r nsj0820 若要设置所有用户账户密码过期的时间,则可通过修改 / etc/login.defs 配置文件中的 PASS_MAX_DAYS...*声明:推送内容及图片来源于网络,部分内容会有所改动,版权归原作者所有,如来源信息有误或侵犯权益,请联系我们删除或授权事宜。

    1.3K30

    Linux下用户及用户权限管理

    在linux系统中,所创建的用户帐号和其相关信息(密码除外)均是存放在/etc/passwd配置文件中。...在passwd文件中,一行定义一个用户帐号,每行均由多个不同的字段构成,各字段值间用:分隔,每个字段均代表该帐号某方面的信息。...在刚安装完成的linux系统中,passwd配置文件已有很多帐号信息了,这些帐号是由系统自动创建的,他们是linux进程或部分服务程序正常工作所需要使用的账户,这些账户的最后一个字段的值一般为/sbin...userdel命令来实现,其用法为: userdel [-r] 帐户名 -r为可选项,若带上该参数,则在删除该账户的同时,一并删除该账户对应的主目录。...[root@localhost ~]# userdel -r nsj0820 若要设置所有用户账户密码过期的时间,则可通过修改/etc/login.defs配置文件中的PASS_MAX_DAYS配置项的值来实现

    7.5K31
    领券