好吧,标题或多或少都说明了一切.我有点理解REST是什么 - 使用现有的HTTP程序(POST,GET等)来促进Web服务的创建/使用.我对如何定义Web服务有什么更加困惑是,将其余的实际上是如何用来制造/暴露的服务.
例如,根据我的阅读,Twitter是RESTful.这究竟意味着什么?如何调用HTTP过程?当我写一条推文时,REST是如何涉及的,除了简单地使用服务器端语言并将该文本数据存储在数据库或文件中之外,它有何不同?
我有点困惑为什么/何时我想要使用泛型方法,因为非泛型方法可以访问其包含类的泛型成员并且无论如何都要传递泛型参数.
所以,使用一个可能忽略这一点的罐头示例(但突出了我为什么要问这个问题),为什么我会这样做:
public class SomeGeneric<T>
{
public T Swap<T>(ref T a, ref T b)
{
T tmp = a;
a = b;
b = tmp;
}
}
Run Code Online (Sandbox Code Playgroud)
过度
public class SomeGeneric<T>
{
public T Swap(ref T a, ref T b)
{
T tmp = a;
a = b;
b = tmp;
}
}
Run Code Online (Sandbox Code Playgroud)
这个?
或者,真的,为什么我会想使用一个通用的方法,在所有?
我在控制器中设置了一条flash消息,代码如下:
$this->get('session')->getFlashBag()->add('success', 'Message sent successfully');
Run Code Online (Sandbox Code Playgroud)
在我的模板中,我使用以下内容(尝试)显示它:
{% if app.session.flashbag.has('success') %}
<div id="flash">
{{ app.session.flashbag.get('success') }}
</div>
{% endif %}
Run Code Online (Sandbox Code Playgroud)
问题是,尽管API文档声明get返回一个字符串,但我得到一个数组到字符串转换异常.如果我将模板中的代码更改为:
{% for flashMessage in app.session.flashbag.get('success') %}
<div id="flash">
{{ flashMessage }}
</div>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
它完美地运作.我宁愿不在这里使用循环,因为我只是要么有或没有.
有没有一个解决方案,我可以检查是否存在单个Flash消息并显示它是否存在?还是我坚持使用无用的循环?
出于某种原因,我在AutoMapper地图定义中使用的循环迭代次数超过应有的范围.
地图定义:
Mapper.CreateMap<AdminGameEditModel, Game>()
.BeforeMap((s, d) =>
{
foreach (var platId in s.PlatformIDs)
{
Platform newPlat = _gameRepository.GetPlatform(platId);
d.Platforms.Add(newPlat);
}
})
.ForMember(dest => dest.BoxArtPath, opt => opt.Ignore())
.ForMember(dest => dest.IndexImagePath, opt => opt.Ignore())
.ForMember(dest => dest.Cons, opt => opt.MapFrom(src => String.Join("|", src.Cons)))
.ForMember(dest => dest.Pros, opt => opt.MapFrom(src => String.Join("|", src.Pros)))
.ForMember(dest => dest.LastModified, opt => opt.UseValue(DateTime.Now))
.ForMember(dest => dest.Platforms, opt => opt.Ignore());
Run Code Online (Sandbox Code Playgroud)
由于BeforeMap某种原因,foreach 将在s.PlatformIDs数组中多次迭代.因此,例如,如果它包含两个值,我将获得六次或更多次迭代,其中两个期望值重复.该PlatformIDs被不限定为二维阵列,并且调试确认阵列只包含它应该的值,没有重复套.
我很难过可能导致它的原因.
编辑:通过循环,我有以下断点 -
.BeforeMap((s, d) =>
{
foreach (var platId in …Run Code Online (Sandbox Code Playgroud) 我使用以下代码包含我的CSS:
{% stylesheets 'bundles/majorproductionssewingdivasite/css/*.css' filter='cssrewrite' %}
<link rel="stylesheet" type="text/css" href="{{ asset_url }}" />
{% endstylesheets %}
Run Code Online (Sandbox Code Playgroud)
在开发中,这允许我使用图像精灵而没有任何问题.我的精灵的结果URL是:
http://localhost/diva/web/bundles/majorproductionssewingdivasite/images/diva-sprites.jpg
但是,在prod中,它被映射到:
http://localhost/diva/bundles/majorproductionssewingdivasite/images/diva-sprites.jpg
注意缺少web目录.
CSS文件中生成的代码应该是这样,并且我的所有CSS(dev'unk'和最终的prod资产转储)都在web/css/.关于为什么prod环境正在跳过web目录的任何想法?
编辑:奇怪的是dev和prod在CSS本身生成相同的URL:
url('../../bundles/majorproductionssewingdivasite/images/diva-sprites.jpg')
我的老板为softdelete过滤器安装了这个软件包,但文档超出了稀疏范围.如何在删除查询中使用它?
我理解如何设置自己的路由,但是如何处理路由表中的路径呢?我的意思是,我猜默认{controller}/{action}/{id}路线可能是一个通用的捕获,但我不确定这是不是可行的方法.我喜欢让我的用户知道他们已经请求了数据/不存在的"页面".
这是[HandleError]过滤器进来的地方吗?这究竟是如何运作的?
我似乎在共享主机上的缓存权限有一些问题.具体来说,当我尝试通过Composer安装/更新供应商时,我收到运行时异常:
$ php composer.phar update -v -o
Script Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::clearCache handling the post-update-cmd event terminated with an exception
[RuntimeException]
An error occurred when executing the "'cache:clear --no-warmup'" command.
Exception trace:
() at /home/thesewingdiva/private/vendor/sensio/distribution-bundle/Sensio/Bundle/DistributionBundle/Composer/ScriptHandler.php:137
Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::executeCommand() at /home/thesewingdiva/private/vendor/sensio/distribution-bundle/Sensio/Bundle/DistributionBundle/Composer/ScriptHandler.php:48
Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::clearCache() at phar:///home/thesewingdiva/private/composer.phar/src/Composer/Script/EventDispatcher.php:122
Composer\Script\EventDispatcher->executeEventPhpScript() at phar:///home/thesewingdiva/private/composer.phar/src/Composer/Script/EventDispatcher.php:101
Composer\Script\EventDispatcher->doDispatch() at phar:///home/thesewingdiva/private/composer.phar/src/Composer/Script/EventDispatcher.php:74
Composer\Script\EventDispatcher->dispatchCommandEvent() at phar:///home/thesewingdiva/private/composer.phar/src/Composer/Installer.php:237
Composer\Installer->run() at phar:///home/thesewingdiva/private/composer.phar/src/Composer/Command/UpdateCommand.php:82
Composer\Command\UpdateCommand->execute() at phar:///home/thesewingdiva/private/composer.phar/vendor/symfony/console/Symfony/Component/Console/Command/Command.php:238
Symfony\Component\Console\Command\Command->run() at phar:///home/thesewingdiva/private/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:193
Symfony\Component\Console\Application->doRun() at phar:///home/thesewingdiva/private/composer.phar/src/Composer/Console/Application.php:101
Composer\Console\Application->doRun() at phar:///home/thesewingdiva/private/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:106
Symfony\Component\Console\Application->run() at phar:///home/thesewingdiva/private/composer.phar/src/Composer/Console/Application.php:74
Composer\Console\Application->run() at phar:///home/thesewingdiva/private/composer.phar/bin/composer:37
require() at /home/thesewingdiva/private/composer.phar:15
update [--prefer-source] [--prefer-dist] [--dry-run] [--dev] [--no-custom-installers] [--no-scripts] [--no-progress] [-v|--verbose] …Run Code Online (Sandbox Code Playgroud) 我的背景是PHP和C#,但我真的很想学习RoR.为此,我开始阅读官方文档.我对一些代码示例有一些疑问.
第一个是迭代器:
class Array
def inject(n)
each { |value| n = yield(n, value) }
n
end
def sum
inject(0) { |n, value| n + value }
end
def product
inject(1) { |n, value| n * value }
end
end
Run Code Online (Sandbox Code Playgroud)
我明白这yield意味着"在这里执行相关的块".扔我的是这|value| n =部分each.其他块对我来说更有意义,因为它们似乎模仿C#风格的lambdas:
public int sum(int n, int value)
{
return Inject((n, value) => n + value);
}
Run Code Online (Sandbox Code Playgroud)
但第一个例子让我感到困惑.
另一个是符号.我什么时候想用它们?为什么我不能这样做:
class Example
attr_reader @member
# more code
end
Run Code Online (Sandbox Code Playgroud) 我正试图将我的设计敏感性从LAMP堆栈转移到Microsoft堆栈,我只想到了一些东西 - 我什么时候才能使用GUID?与旧的,可靠的自动递增的int相比,它有什么好处/缺点?
php ×4
symfony ×4
c# ×2
asp.net-mvc ×1
assetic ×1
automapper ×1
composer-php ×1
database ×1
foreach ×1
generics ×1
guid ×1
loops ×1
rest ×1
routes ×1
ruby ×1
web-services ×1