小编Mar*_*oll的帖子

用bottle.py读取POST主体

我在阅读POST请求时遇到问题bottle.py.

发送的请求在其正文中有一些文本.您可以在第29行看到它是如何制作的:https://github.com/kinetica/tries-on.js/blob/master/lib/game.js.

您还可以node在第4行看到它在基于客户端的客户端上的读取方式:https://github.com/kinetica/tries-on.js/blob/master/masterClient.js.

但是,我无法在bottle.py基于客户端的客户端上模仿此行为.该文档说,我可以用一个类似文件的对象读取原始的身体,但也使用了上环,我不能得到数据request.body,也不能使用request.bodyreadlines方法.

我正在用装饰的函数处理请求@route('/', method='POST'),并且请求正确到达.

提前致谢.


编辑:

完整的脚本是:

from bottle import route, run, request

@route('/', method='POST')
def index():
    for l in request.body:
        print l
    print request.body.readlines()

run(host='localhost', port=8080, debug=True)
Run Code Online (Sandbox Code Playgroud)

python post bottle python-2.7

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

测试ASP.NET Core IMemoryCache的正确方法

我正在编写一个简单的测试用例,测试我的控制器在调用我的服务之前调用缓存.我正在使用xUnit和Moq来完成任务.

我面临一个问题,因为它GetOrCreateAsync<T>是一种扩展方法,并且不能被框架嘲笑.我依靠内部细节来弄清楚我可以嘲笑TryGetValue并躲开我的测试(参见https://github.com/aspnet/Caching/blob/c432e5827e4505c05ac7ad8ef1e3bc6bf784520b/src/Microsoft.Extensions.Caching.Abstractions/MemoryCacheExtensions.cs# L116)

[Theory, AutoDataMoq]
public async Task GivenPopulatedCacheDoesntCallService(
    Mock<IMemoryCache> cache,
    SearchRequestViewModel input,
    MyViewModel expected)
{
    object expectedOut = expected;
    cache
        .Setup(s => s.TryGetValue(input.Serialized(), out expectedOut))
        .Returns(true);
    var sut = new MyController(cache.Object, Mock.Of<ISearchService>());
    var actual = await sut.Search(input);
    Assert.Same(expected, actual);
}
Run Code Online (Sandbox Code Playgroud)

我无法入睡,因为我正在窥视MemoryCache实现细节,它可以在任何时候改变.

作为参考,这是SUT代码:

public async Task<MyViewModel> Search(SearchRequestViewModel request)
{
    return await cache.GetOrCreateAsync(request.Serialized(), (e) => search.FindAsync(request));
}
Run Code Online (Sandbox Code Playgroud)

您会建议以不同方式进行测试吗

c# extension-methods moq .net-core asp.net-core

13
推荐指数
1
解决办法
8033
查看次数

如何在Angular 2中设置ng-bootstrap组件的样式

我正在尝试将样式应用于我的Angular 2应用程序中的ngbTooltip组件.我将指令应用为:

<div [ngbTooltip]="tooltipText">
    Element text
</div>
Run Code Online (Sandbox Code Playgroud)

但是由于Angular 2应用了样式范围,我不能直接.tooltip在我的组件模板中设置类的样式.

如何为此特定组件提供自定义样式的工具提示?

编辑:

我有一个附加到我的组件的scss样式表.我的风格(简化)是:

.license-circle {
    width: 10px;
    ... other styles
}

/deep/ .tooltip {
    &.in {
        opacity: 1;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是我的渲染样式看起来像:

<style>
.license-circle[_ngcontent-uvi-11] {
  width: 10px; }

.tooltip.in {
  opacity: 1; }
</style>
Run Code Online (Sandbox Code Playgroud)

这让我相信工具提示样式是未封装的(而不仅仅是刺穿这个组件的子代.

注意:我试过:host >>> .tooltip但它不起作用,所以我最终使用了/deep/.

谢谢!

ng-bootstrap angular

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

RxJS延迟至少X毫秒

我正在尝试在RxJS中实现以下行为:

  1. 开火活动
  2. 调用http API
  3. 当API返回时,要么:
    1. 等到自触发事件起至少经过X毫秒
    2. 如果触发事件后已经过了X毫秒,则立即返回

这对于UX非常有用,因为即使调用需要1ms,我也想显示一个至少100ms的加载图标.

我还没有发现任何方式要么实现此delay,throttle,debounce或它的变化.

this.eventThatFires
    .switchMap(data => {
        let startTime = Date.now();
        return this.callHttpService(data)
            .delay(new Date(startTime + 1000));
    })
Run Code Online (Sandbox Code Playgroud)

我假设这样的工作有效,但使用绝对日期似乎与当前时间有一个时间差,而不是安排那个绝对时间的延迟.


编辑:

似乎没有内置的运算符可以像我描述的那样工作.我刚创建它因为我将在整个应用程序中使用它:

import { Observable } from "rxjs/Observable";

function delayAtLeast<T>(this: Observable<T>, delay: number): Observable<T> {
    return Observable.combineLatest(
        Observable.timer(delay),
        this)
    .map(([_, i]) => i);
}

Observable.prototype.delayAtLeast = delayAtLeast;

declare module "rxjs/Observable" {
    interface Observable<T> {
        delayAtLeast: typeof delayAtLeast;
    }
}
Run Code Online (Sandbox Code Playgroud)

rxjs typescript

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

RxJS 5和缓存运算符的替代品

在升级RxJS之前5.0.0-rc.0我使用.cache()了很多来在我的Angular应用程序中共享订阅.使用它的最大优点是任何新订阅都将获得最后发布的值.

RxJS团队决定删除它,现在我发现自己手动连接私人BehaviorSubjectReplaySubject随后打电话.asObservable().考虑到我们之前必须采用的简单方法,这似乎是很多样板.

我错过了一些更简单的方法吗?我找不到.replay()经营者,以及.share().publishReplay()运营商似乎并不做这一点.

谢谢!

rxjs angularjs rxjs5 angular

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

Java中没有丢弃注释

我和我的团队刚刚在我们的代码库中遇到了一个错误,因为我们忽略了一个不可变结构的返回值:https : //github.com/rsksmart/rskj/pull/229

我想注释方法,例如Trie.put指示用户不要丢弃该值([[nodiscard]]如 C++17 中的那样)以防止将来出现问题。

我们正在使用 SonarQube 并且能够打开来自 FindBugs 和其他程序的检查,但是如果代码不像@Override在基类中不存在的方法上使用时那样编译,那将是最好的。我试过了@CheckReturnValue,它在 IntelliJ IDE 中给了我一个警告,但没有什么可以阻止发送这样的代码。

我们可以探索哪些其他替代方法来在编译时引入更多检查?

java annotations static-analysis sonarqube

6
推荐指数
0
解决办法
462
查看次数

当文本框的绑定设置为OneWayToSource时,WPF TargetNullValue返回值

我有这个xaml文本框

<TextBox Text="{Binding ProdFilter.Min, Mode=OneWayToSource,
   UpdateSourceTrigger=PropertyChanged, TargetNullValue=''}"
   Width="50" DockPanel.Dock="Right" TabIndex="3" />
Run Code Online (Sandbox Code Playgroud)

绑定到此属性:

        public double? Min
        {
            get { return min; }
            set
            {
                if (value == null)
                    value = 0;
                min = value;
                OnPropertyChanged("Min");
            }
        }
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,当程序启动或用户清除文本时,文本框的文本设置为"0".我不知道这种行为是否正确,因为我正在使用OneWayToSource,但我希望我的属性在文本为空时设置为null(并且文本保持为空!)

有任何想法吗?谢谢!

c# wpf binding targetnullvalue c#-4.0

5
推荐指数
1
解决办法
6835
查看次数

无法使用未定义的属性缩小简单的 TypeScript 联合类型

我有两种联合类型,一种有属性,另一种没有。我认为检查该属性是否存在可以让我缩小范围,但它不起作用。

我创建了这个 Playground repro。另一个非常相似的东西似乎工作得很好。我是否以错误的方式使用工会?

为了完整起见,这是代码:

export interface AuthenticatedProfile {
    readonly userId: string;
    readonly name: string;
}
export interface AnonymousProfile {
    readonly userId: undefined;
    readonly otherProp: string;
}
export type Profile = AnonymousProfile | AuthenticatedProfile;

function handleProfile(prof: Profile) {
    if (prof.userId) {
        console.log(prof.name);
    }
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

type-systems typescript typescript2.0 union-types

5
推荐指数
1
解决办法
1188
查看次数

REST API的并发检查?

我正在启动REST API来创建Web应用程序.

大多数网站都会告诉您删除向DELETEURI 发出HTTP请求的资源/{resource}/{resource-id}.我害怕删除一些自我检索以来可能已更新的资源,甚至是错误的资源.

是否可以要求将资源的时间戳与请求一起发送?我没有在任何地方看到它,但我认为它可能非常有用.它会检查并发性并防止删除随机资源,甚至不用以前检索它们.

api rest concurrency

3
推荐指数
1
解决办法
1116
查看次数

发送Ktor中的application / x-www-form-urlencoded

我不知道如何application/x-www-form-urlencoded POST在Ktor中发送请求。我submitForm在Ktor的文档中看到了一些助手,但是他们没有按预期发送请求。

我想要的是复制此卷曲线行为:

curl -d "param1=lorem&param2=ipsum" \
     -H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" \
     https://webservice/endpoint
Run Code Online (Sandbox Code Playgroud)

我的依赖是io.ktor:ktor-client-cio:1.0.0

urlencode kotlin ktor

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