Questions tagged «web-services»

Web服务是旨在支持网络上可互操作的机器对机器交互的软件系统。



7
建立服务层有多重要?
我开始按3层(DAL,BL,UI)构建应用程序[它主要处理CRM,一些销售报告和库存]。 一位同事告诉我,我必须转向服务层模式,开发人员应从他们的经验中学到服务模式,这是设计大多数应用程序的更好方法。他说,将来以这种方式维护应用程序会容易得多。 就个人而言,我觉得它只是使事情变得更加复杂,我看不出有什么好处可以证明这一点。 这个应用程序确实有一个额外的小部分ui,它使用了一些(但只有少数)桌面应用程序功能,因此我确实发现自己在复制一些代码(但不很多)。仅仅由于某些代码重复,我不会将其转换为面向服务的,但是他说我还是应该使用它,因为总的来说,这是一个非常好的架构,为什么程序员如此热衷于服务? 我试图用谷歌搜索它,但是我仍然很困惑,无法决定该怎么做。

5
从另一个微服务“拥有”的数据库中读取数据为何如此糟糕
我最近阅读了有关微服务体系结构的出色文章:http : //www.infoq.com/articles/microservices-intro 它指出,当您在Amazon上加载网页时,则有100多个微服务合作提供该页面。 该文章描述了微服务之间的所有通信只能通过API。我的问题是,为什么这么糟糕的说法是所有数据库写操作只能通过API进行,但是您可以自由地直接从各种微服务的数据库中进行读取。例如,可以说微服务外部只能访问少数几个数据库视图,以便维护微服务的团队知道只要保持这些视图不变,那么他们就可以尽可能多地更改其微服务的数据库结构。想。 我在这里想念什么吗?还有其他原因为什么只能通过API读取数据? 不用说,我的公司要比亚马逊小得多(并且一直会这样),我们可以拥有的最大用户数约为500万。


9
您是否应该防止来自外部API的意外值?
可以说,您正在编码一个从外部API接收输入的函数MyAPI。 该外部API MyAPI的合同规定其将返回string或number。 它是推荐的防范之类的东西null,undefined,boolean等即使它不属于API的一部分MyAPI?特别是,由于您无法控制该API,因此无法通过诸如静态类型分析之类的方法来做出保证,因此,安全起来总比对不起好。 我在考虑稳健性原则。

3
SOAP的当前意义是什么
上一次我在2013年在一家金融公司实习期间遇到了一个基于SOAP的服务。那是我开始从事IT事业的时候。我记得在我的一个工程课程中有一些关于SOAP的学习资料。除此之外,我在职业生涯中没有使用过太多SOAP。 我问这个问题是因为“ SOAP和REST之间的差异”这个问题是我最近的一次采访中出现的。据我所知(以及我在Google上所发现的),SOAP是一种在客户端和服务器之间具有紧密耦合的协议,用于信息交换,该协议与业务逻辑密切相关。REST是用于数据传输的更灵活的无状态架构。 如果我对SOAP和REST之间的区别有误,可以请我纠正我吗?另外,SOAP在当今的意义是什么?人们仍在开发新的基于SOAP的API,还是现在已经成为传统?
51 rest  api  web-services  soap 

2
建议的“达到请求限制”的HTTP REST状态代码
我正在整理一个REST服务的规范,其中的一部分将包含在整个服务范围内以及一组资源或单个资源上限制用户的功能。同样,这些超时可以按资源/组/服务进行配置。 我只是在浏览HTTP 1.1规范,并试图决定如何与客户端通信,因为请求已达到极限,因此无法满足请求。 最初,我认为客户端代码403 - Forbidden就是这样,但从规范中可以看出: 授权将无济于事,不应重复请求 困扰着我 实际上似乎503 - Service Unavailable是一种更好的用法-因为它允许通过使用Retry-After标头来传递重试时间。 将来我可能会希望通过电子商务支持“购买”更多的请求(在这种情况下,如果客户端代码402 - Payment Required已完成,那就太好了!)-但我认为这也同样可以被压缩为503响应。 您认为我应该使用哪个?还是有我没有考虑过的另一个?

4
REST-通过Accept标头与扩展进行内容协商之间的权衡
我正在设计一个RESTful API。我们知道我们想为任何给定资源返回JSON和XML。我一直在想我们会做这样的事情: GET /api/something?param1=value1 Accept: application/xml (or application/json) 但是,有人为此使用扩展名,就像这样: GET /api/something.xml?parm1=value1 (or /api/something.json?param1=value1) 这些方法的权衡是什么?未指定扩展名时最好依靠accept标头,但在指定扩展名时依靠荣誉标头吗?这种方法有缺点吗?

3
何时使用RPC-ish方法比REST更合适?
看这次谈话后的休息,再利用和缘分由史蒂夫Vinoski的,我不知道是否有商业案例在新建项目(基于XML)RPC十岁上下的设置,即REST不能以更好的方式解决。 他提到了一些RPC问题: 专注于语言(使分布式系统适应该语言,而不是相反) “使它看起来是本地的”(并将失败和延迟作为例外而不是规则来处理) 旨在独立于语言,但仍将跨语言的“函数调用”作为主要成分 IDL样板 类型安全的错觉 还有更多... 只是为了生动起见,RPC vs REST的一些Google Instant结果:

4
MVC / REST是否应为属于其他用户的资源返回403或404?
当使用基于资源的站点(例如MVC应用程序或REST服务)时,当客户端尝试GET访问他们无权访问的资源时,我们有两个主要选择: 403,表示客户未经授权 ; 要么 404,表示资源不存在(或无法找到)。 共同的智慧和惯例似乎是对事实做出回应-即403。但是我想知道这是否真的是正确的做法。 安全登录系统永远不会告诉您登录失败的原因。也就是说,就客户端而言,不存在的用户名和错误的密码之间没有可检测到的差异。目的是使用户ID(或更糟糕的是电子邮件地址)不易被发现。 从隐私的角度来看,返回404似乎更安全。我想起了一起事件,据说有人通过查看真人秀(幸存者)中的哪些资源不存在而找到了他们。网站与哪些网站做了。我担心403可能会泄露敏感信息,例如序列号或帐号。 是否有令人信服的理由不返回404?404政策会在其他地方产生负面影响吗?如果没有,那为什么不更普遍呢?

5
执行不受信任的代码的最佳实践
我有一个项目,需要允许用户对我的服务器运行任意的,不受信任的python代码(有点像这样)。我是python的新手,我想避免犯任何会给系统带来安全漏洞或其他漏洞的错误。您是否可以提供最佳实践,推荐阅读或其他建议,以使我的服务可用但不可滥用? 到目前为止,这是我考虑过的内容: __builtins__从exec上下文中删除以禁止使用潜在危险的软件包,例如os。用户将只能使用我提供给他们的软件包。 使用线程强制合理的超时。 我想限制可以在exec上下文中分配的内存总量,但是我不确定是否可能。 有一些替代Straight的方法exec,但是我不确定其中哪些方法会有所帮助: 使用ast.NodeVisitor捕获任何尝试访问不安全对象的尝试。但是我应该禁止哪些物品? 搜索输入中的任何双下划线。(比上面的选项不太优雅)。 使用PyPy或类似于沙箱的代码。 注意:我知道至少有一个基于JavaScript的解释器。在我的情况下,这行不通。

7
选择将Web服务公开为SOAP或REST服务的决定因素是什么?
据我所知,使用SOAP需要使用SOAP堆栈,因此客户端很难使用,即他们需要确保已拥有适当的SOAP堆栈来正确格式化POST数据和标头,然后为您提供一些数据结构,而使用REST,您只需使用查询字符串中的参数发出HTTP GET请求,然后获取一些我想可能是XML的文本。 那么,SOAP的额外开销/复杂性会给您带来什么呢?什么时候需要它?什么时候可以?

10
API设计:具体与抽象方法-最佳做法?
在系统之间(业务级别)讨论API时,我们团队中通常有两种不同的观点:有些人更喜欢(可以说)通用抽象方法,而另一些则是直截了当的“具体”方法。 示例:设计一个简单的“人员搜索” API。具体的版本是 searchPerson(String name, boolean soundEx, String firstName, boolean soundEx, String dateOfBirth) 支持具体版本的人说: API是自我记录的 很容易理解 易于验证(编译器或作为Web服务:模式验证) 吻 我们团队中的另一组人会说“那只是搜索条件列表” searchPerson(List<SearchCriteria> criteria) 与 SearchCritera { String parameter, String value, Map<String, String> options } 可能使某些枚举类型的“参数”。 支持者说: 在不更改API(声明)的情况下,实现可以更改,例如添加更多条件或更多选项。即使在部署时也没有同步这样的更改。 即使使用具体的变体,也需要文档 模式验证被高估了,通常您需要进一步验证,模式无法处理所有情况 我们已经有一个与其他系统类似的API-重用 相反的论点是 有关有效参数和有效参数组合的大量文档 需要更多的沟通工作,因为其他团队更难以理解 有没有最佳做法?文献?

4
我应该如何构建RESTful Web服务以使用第三方(即Google,Facebook,Twitter)进行身份验证?
对于我的工作,我们有一个不错的RESTful Web服务,我们已经建立了该服务,用于驱动我们拥有的几个网站。基本上,Web服务使您可以创建和使用支持凭单,并且网站负责前端。任何网络服务请求都使用auth标头,我们使用该标头来验证用户及其每次呼叫的密码。 今年,我们正在寻求扩展登录选项,以便网站上的用户可以通过Google,Twitter和Facebook(可能还有其他)登录。但是,我在弄清楚如何设计该结构方面很麻烦,因此Web服务可以使用第三方身份验证提供程序来确保用户就是他们所说的。是否有最佳实践来做到这一点? 当前,我们正在考虑让网站处理用户本身的身份验证,然后使用一个新的setSessionId调用来将其当前会话注册到Webservice后端。对Web服务的每个其他请求都将传递该sessionId并将对其进行验证。这些看起来还可以,但是我的内心深处感到我没有考虑透彻,所有浏览和阅读oauth和openid规范的论坛都让我更加困惑。有什么技巧可以解决这个问题吗?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.