小编cur*_*sdf的帖子

RESTful API运行时可发现性/ HATEOAS客户端设计

对于我参与的SaaS创业公司,我正在构建一个RESTful Web API和几个使用它的不同平台上的客户端应用程序.我想我已经找到了API,但现在我转向客户了.正如我一直在阅读关于REST的内容,我发现 REST的一个关键部分是发现,但是对于发现的真正含义的两种不同解释似乎存在很多争论:

  1. 开发人员发现:开发人员将大量API详细信息硬编码到客户端,例如资源URI,查询参数,支持的HTTP方法以及他们通过浏览文档和试验API响应而发现的其他详细信息.这种类型的发现IMHO需要很酷的链接和API版本问题,并导致客户端代码与API的硬耦合.似乎没有比使用详细记录的RPC集合好多少.

  2. 运行时发现 - 客户端应用程序本身能够在很少或没有带外信息的情况下找出所需的一切(可能只是对API处理的媒体类型的了解.)链接可能很热.但是为了使API非常高效,似乎需要大量的查询参数链接模板,这会使带外信息重新出现.由于我还没有,我可能还有其他的困难.在发展中得到了这一点.但我确实喜欢松耦合的想法.

运行时发现似乎是REST的圣杯,但我看到很少讨论如何实现这样的客户端.几乎所有我发现的REST源似乎都假设开发人员发现.有人知道一些运行时发现资源吗?最佳做法?具有实际代码的示例或库?我正在为一个客户端使用PHP(Zend Framework).另一个是Objective-C(iOS).

鉴于开发人员社区中目前的一系列工具和知识,运行时发现是否是一个现实的目标?我可以编写我的客户端以不透明的方式处理所有URI,但如何最有效地执行此操作是一个问题,尤其是在低带宽连接上.无论如何,URI只是等式的一部分.如何在运行时上下文中链接模板?除了提出大量的OPTIONS请求之外,如何传达支持哪些方法呢?

api rest discovery hateoas

77
推荐指数
5
解决办法
2万
查看次数

使用CURL下载文件并查看标题和状态代码

我正在编写一个Bash脚本来从Snapito的网页快照API 下载图像文件.API可以返回由不同HTTP响应代码和/或一些自定义标头指示的各种响应.我的脚本旨在作为自动Cron作业运行,从MySQL数据库中提取URL并将屏幕截图保存到本地磁盘.

我在用curl.我想使用单个CURL命令执行以下三项操作:

  1. 提取HTTP响应代码
  2. 提取标题
  3. 在本地保存文件(如果请求成功)

我可以使用多个curl请求执行此操作,但我希望最小化我点击Snapito服务器的次数.任何curl专家在那里?

或者如果某人有一个Bash脚本可以响应完整记录的Snapito API响应集,那就太棒了.这是他们的API文档.

谢谢!

bash curl

15
推荐指数
2
解决办法
2万
查看次数

Composer不会安装"require-dev"软件包

我正在尝试使用Laravel进行一些开发,并且由于某种原因,我无法安装它来安装任何require-dev依赖项composer.json文件中的部分中列出的任何软件包.默认情况下应该安装AFAIK,dev依赖项.我已经尝试过,有没有--dev国旗composer install.我也试着删除的内容vendors/和删除composer.lock,并~/.composer与从头开始重新安装所有的依赖,但仍没有运气.我也尝试过各种迭代的composer update命令.

例如,在中vendor/laravel/framework/composer.json,它列出了这些:

"require-dev": {
    "aws/aws-sdk-php": "2.4.*",
    "iron-io/iron_mq": "1.4.*",
    "pda/pheanstalk": "2.1.*",
    "mockery/mockery": "0.8.0",
    "phpunit/phpunit": "3.7.*"
},
Run Code Online (Sandbox Code Playgroud)

这些都没有安装.有什么想法我错过了什么?这是我的主要composer.json文件,FWIW.

{
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "MIT",
"require": {
    "laravel/framework": "4.0.*",
    "rncryptor/rncryptor-php": "1.*"
},
"autoload": {
    "classmap": [
        "app/commands",
        "app/controllers",
        "app/models",
        "app/libraries",
        "app/database/migrations",
        "app/database/seeds",
        "app/tests/TestCase.php"
    ]
},
"scripts": {
    "post-install-cmd": [
        "php artisan optimize"
    ],
    "pre-update-cmd": [ …
Run Code Online (Sandbox Code Playgroud)

composer-php

14
推荐指数
2
解决办法
9598
查看次数

应该将测量单位本地化吗?

我正在开发一款应用程序,其中包含由操作人员输入的一些测量 在配置部分,管理员输入哪些测量值以及他们想要使用的单位等.预期的单位种类非常多样化,无法完全确定.因此,计划是让管理员以自由格式输入单位,而不是使用选择框.

好到目前为止.但在其他地方,当应用程序被本地化为几种不同语言中的一种时,我们正在显示这些单元.应用程序从一开始就知道可能的语言范围.

我正在寻找有关如何最好地处理单位输入和显示的想法.我不是语言专家,但我想不同的语言有自己的方式来表示相同的单位,这意味着如果我们使用自由格式的文本输入,管理员必须输入单位的翻译成每种语言.我们在应用程序中使用其他类型的文本字段,因此从编码的角度来看,这不是一个大问题.

但我想知道其他人如何处理这种情况.不翻译单位会容易得多.但这样合理吗?FWIW,该系统的管理员和最终用户都是典型的消费者,不一定是科学家或其他分析类型.此外,我们需要避免让我们的软件依赖于谷歌翻译等第三方服务.

translation localization

11
推荐指数
1
解决办法
3436
查看次数

在抛出异常时使Struts发送500内部服务器错误

我正在开发一个支持AJAX的JavaScript前端,它调用使用Struts编写的Java后端.我的问题是,当后端抛出异常时,客户端仍然会看到"200 OK"HTTP响应代码,而不是像预期的那样"500内部服务器错误".

这让我反复绊倒,因为我的第三方客户端JavaScript库依赖于HTTP状态代码来确定AJAX调用是否有问题,正如大多数现代库通常所做的那样.错误传递未检测到,直到我的代码在尝试解析通常为JSON的东西时爆炸.

我真的想避免黑客攻击我的客户端JS库,以便优雅地处理这些错误.那么,当后端出现未处理的异常时,如何让Struts为我提供500状态代码呢?这不应该是Struts的默认行为吗?

编辑:在这种情况下,客户端代码无关紧要.我需要修复服务器,以便在未处理的异常发生时发送相应的状态代码.谢谢!

struts http-response-codes

8
推荐指数
1
解决办法
1万
查看次数

Laravel日志记录:日志行末尾的额外方括号?

我对Laravel很新,我注意到当我使用基于Monolog的日志记录时,例如Log::info('blah blah'),它写入我的日志文件的行后缀有两组空方括号.它们是什么,我怎么能把它们关掉?他们丝毫没有帮助.我已经尝试深入挖掘源代码和谷歌搜索,但我没有看到任何解释.

例:

[2013-11-12 09:13:16] log.INFO:Hello world [] []

[2013-11-12 09:13:31] log.INFO:我的愚蠢日志消息[] []

谢谢!

php monolog laravel-4

8
推荐指数
2
解决办法
3325
查看次数

iOS:当应用程序背景时隐藏屏幕上的敏感信息

当前景应用程序变为后台时(例如,按下主页按钮),如何在iOS拍摄快照之前更改最顶层视图控制器上的元素并启动动画以显示下一个屏幕?

我问,因为我正在编写一个需要HIPAA合规性的应用程序,我担心操作系统为了制作这个动画而拍摄的快照有时会包含敏感数据,这些数据即使在应用程序获得预防后一瞬间也不应该是可见的.

我知道视图控制器有生命周期方法,例如viewWillDisappear可能可用,但我有很多控制器,我宁愿在我的App Delegate中有一些东西来处理这个(例如通过添加一个不透明的全屏UIImageView覆盖层)而不是必须在每个最后一个控制器中为此编写自定义代码.

我尝试将叠加生成代码放入其中applicationWillResignActive,并且我一直在使用Apple的文档和Google,但它不起作用.我怀疑截图是在应用有机会更新屏幕之前拍摄的.

谢谢!

backgrounding hipaa ios

6
推荐指数
1
解决办法
1774
查看次数