我发现 HTTP 方法通常称为Verbs。
(我知道正确的名称是方法来自:https://www.rfc-editor.org/rfc/rfc7231)
这个名字从何而来?
我想通过REST API更改用户密码.这不是忘记或重置密码功能,而是登录用户想要更改其密码.
表单需要当前密码,新密码和新密码的确认.但是,我想在用户填写时验证每个表单字段.对于newPassword和confirmNewPassword(客户端)来说这是微不足道的,但不是currentPassword.目前正在通过执行User对象的更新PUT /users/:id.如果传递了密码参数,我currentPassword会在保存之前检查参数并确保其正确.但是,为了验证,我不确定最好的方法.
我也有POST /users/validate- 不确定这是否也是最好的.这证实一个用户对象都创建和更新,但仅验证属于用户对象(字段email,username,password).currentPassword不是其中之一.想知道如何处理这个问题.我考虑过的一些事情:
POST /users/check_password,
POST /users/validate(如果传递了该参数,则添加currentPassword验证,并检查currentPassword是否与用户现有密码匹配)和
POST /users/:id/validate(对现有用户进行单独验证,需要currentPassword).
任何想法或建议将不胜感激.我的第一个应用程序只通过REST API公开功能.
我了解REST是Web的推荐体系结构样式,该样式基本上适用于HTTP协议。我想知道是否在其他协议(如TCP或自定义协议)中应用了RESTful体系结构。有人可以将我指向具有这种特征的应用程序,还是可以解释RESTful是否仅用于HTTP。
提前致谢
是否有可能通过(a)javascript(框架 - 例如angularjs)消费hateoas类型的restful webservice?我想客户端需要实现相当多的逻辑才能到达实际端点.任何反馈都将非常感激.谢谢!
我有一个RESTful API,我正在设计它使用数字主键的所有资源.然而,一种类型的资源具有方便的自然键,我希望能够将其用作指定单个资源的可选方式.为了保持一致性,可以通过主键访问所有资源.
就目前而言,我可以这样做(假设23是主键):
mysite.com/api/v0/sites/23/
Run Code Online (Sandbox Code Playgroud)
但是,我想知道是否有一种惯用的方法来为资源指定备用自然键.
到目前为止,我一直想做这样的事情:
mysite.com/api/v0/sites/?domain-name=someothersite.com/
Run Code Online (Sandbox Code Playgroud)
因此,单个站点资源可以通过其主键和自然键(其域名)访问.我主要关心的是以惯用的方式进行此操作,因为我希望尽可能简单地使用API.
我们来看下面的例子:
我们希望从RESTful API公开公司和员工信息.
公司数据应该非常简单:
GET api/v1/companies
GET api/v1/companies/{id}
Run Code Online (Sandbox Code Playgroud)
员工属于公司,但我们仍然希望单独检索它们,因此哪种解决方案最好:
获取公司的所有员工:
GET api/v1/companies/{companyId}/employees
Run Code Online (Sandbox Code Playgroud)
获得特定员工:
GET api/v1/companies/{companyId}/employees/{employeeId}
Run Code Online (Sandbox Code Playgroud)
获取公司的所有员工:
GET api/v1/employees?companyId={companyId}
Run Code Online (Sandbox Code Playgroud)
获得特定员工:
GET api/v1/employees/{employeeId}
Run Code Online (Sandbox Code Playgroud)
两种选择似乎都有其优点和缺点.
对于子资源,当想要检索单个员工时,我可能并不总是拥有CompanyId.
使用独立资源,如果我们想要RESTful,那么让公司的所有员工都应该使用子资源方法.
否则,我们可以使用混合,但这缺乏一致性:
获取公司的所有员工:
GET api/v1/companies/{companyId}/employees
Run Code Online (Sandbox Code Playgroud)
获得特定员工:
GET api/v1/employees/{employeeId}
Run Code Online (Sandbox Code Playgroud)
如果我们想要坚持RESTful标准,那么采取这种情况的最佳方法是什么?
rest restful-url restful-architecture asp.net-web-api asp.net-web-api2
我有以下实体:
<car>
<carID>7</carID>
<...>...</...>
<externalCarID>23890212</externalCarID>
</car>
Run Code Online (Sandbox Code Playgroud)
现在的问题是,carID和externalCarID是用于通过/不同系统都独立主键,它应该是可能的API客户端访问一个car与两个实体carIDXOR的externalCarID。
这两个键都是整数,并且不使用不交集:
carID(7) != externalCarID(7)
Run Code Online (Sandbox Code Playgroud)
我想到了以下解决方案:
/restapi/car/7和访问/restapi/externalcar/23890212/restapi/car/7?type=regular和/restapi/car/23890212?type=ext一些技巧来解决这个问题或对我的解决方案提供反馈,最好参考REST / HTTP规范,这将是很棒的!
有关主键的背景:
假设我们的发票系统需要carID和母公司控制系统需要externalCarID。我一点都不喜欢它,但是它是一个正在运行的系统,我现在没有办法对其进行更改。
我正在为我正在开发的移动应用程序设计RESTful API.我的问题是包含许多项目的大型集合.我知道一个好的做法是在集合中对大量结果进行分页.
我已经阅读了Facebook Graph API文档(https://developers.facebook.com/docs/graph-api/using-graph-api/v2.2),Twitter游标文档(https://dev.twitter.com/概述/ api/cursoring),GitHub API doc(https://developer.github.com/v3/)和这篇文章(API分页最佳实践).
考虑/resources我的API中的示例集合,其中包含100个名为resource1to resource100和sorted descending的项目.这是您在GET请求时得到的响应(GET http://api.path.com/resources?limit=5):
{
"_links": {
"self": { "href": "/resources?limit=5&page=1" },
"last": { "href": "/resources?limit=5&page=7" },
"next": { "href": "/resources?limit=5&page=2" }
},
"_embedded": {
"records": [
{ resource 100 },
{ resource 99 },
{ resource 98 },
{ resource 97 },
{ resource 96 }
]
}
}
Run Code Online (Sandbox Code Playgroud)
现在我的问题是这样的场景:
1- I获取/resources上述内容.
2-之后,会向资源集合添加一些内容(例如,另一台设备会为此帐户添加新资源).所以现在我有101个资源.
3- …
rest pagination api-design mobile-application restful-architecture
在我作为软件架构师的一家金融公司的电话采访中," 设计了像AWS S3这样的云存储系统".
,我列出了要求 - 对象上的CRUD微服务 - 用于提高性能的缓存层 - 在PaaS上部署 - 具有故障转移的弹性 - AAA支持(授权,审计,计费/计费) - 管理微服务(用户,项目,对象的生命周期,SLA仪表板) - 度量标准集合(Ops,Dev) - 管理UI的服务端点的安全性
我定义了基本的API.
https://api.service.com/services/get Arugments对象id,元数据返回二进制对象
https://api.service.com/services/upload参数对象返回对象id
https://api.service.com/services/delete Arugments对象id返回成功/错误
http://api.service.com/service/update-meta Arugments对象id,元数据返回成功/错误
我用架构和我可以使用的一些COTS组件绘制了图片.下面是图片.

面试官没有问我很多问题,因此我有点担心如果我的进程正确.Pl提供您的反馈..
提前致谢..
我想编写一个查询OpenLibrary的RESTful API,执行以下操作:
到目前为止,这是我能够创造的所有成功:
http://openlibrary.org/query.json?type=/type/edition&authors=/authors/OL1A&covers=&title=&publish_date=&description=
Run Code Online (Sandbox Code Playgroud)
您可以剪切并粘贴到浏览器中以查看结果,OpenLibrary不需要API密钥.
我的主要障碍似乎是:
有帮助吗?
rest ×8
restful-url ×4
api-design ×2
amazon-s3 ×1
angularjs ×1
api ×1
architecture ×1
caching ×1
http ×1
json ×1
pagination ×1
validation ×1