我计划开发一个基于Web的聊天应用程序,它接收ReSTful请求,将它们转换为XMPP并将它们传送到XMPP服务器.
对于这种基于聊天的应用程序使用websockets看起来很有希望,因为事件(或响应)可以异步传递.但是,如果我使用websockets作为从浏览器传输请求的底层协议,这仍然可以被视为ReSTful设计吗?如果是,那么在websocket消息中如何表示URI,动词(GET,POST ...)参数?将它们包装在xml/json中并发送它?
此外,ReSTful架构声明服务器上不会存储任何会话状态.但是在这种情况下,当创建XMPP客户端会话时,此会话的状态将存储在服务器上(违反无状态约束)
我是Angular的新手,我正在尝试使用Angular 5构建一个具有自动完成功能的文本字段.
我在Angular Material docs中找到了这个例子:
https://stackblitz.com/angular/kopqvokeddbq?file=app%2Fautocomplete-overview-example.ts
我想知道如何编写单元测试来测试自动完成功能.我正在为input元素设置一个值并触发'input'事件并尝试选择mat-option元素,但是看到它们都没有创建:
我的组件html的相关部分:
<form>
<mat-form-field class="input-with-icon">
<div>
<i ngClass="jf jf-search jf-lg md-primary icon"></i>
<input #nameInput matInput class="input-field-with-icon" placeholder="Type name here"
type="search" [matAutocomplete]="auto" [formControl]="userFormControl" [value]="inputField">
</div>
</mat-form-field>
</form>
<mat-autocomplete #auto="matAutocomplete">
<mat-option *ngFor="let option of filteredOptions | async" [value]="option.name"
(onSelectionChange)="onNameSelect(option)">
{{ option.name }}
</mat-option>
</mat-autocomplete>
Run Code Online (Sandbox Code Playgroud)
规格文件:
it('should filter users based on input', fakeAsync(() => {
const hostElement = fixture.nativeElement;
sendInput('john').then(() => {
fixture.detectChanges();
expect(fixture.nativeElement.querySelectorAll('mat-option').length).toBe(1);
expect(hostElement.textContent).toContain('John Rambo');
});
}));
function sendInput(text: string) {
let inputElement: HTMLInputElement; …Run Code Online (Sandbox Code Playgroud) unit-testing autocomplete angular-material angular mat-autocomplete
将凭证传递给Dataflow作业的正确方法是什么?
我的某些Dataflow作业需要凭据才能进行REST调用以及获取/后处理数据。
我目前正在使用环境变量将凭据传递给JVM,将它们读入Serializable对象,然后将其传递给DoFn实现的构造函数。我不确定这是正确的方法,因为任何可序列化的类都不应包含敏感信息。
我想到的另一种方法是将凭据存储在GCS中,并使用服务帐户密钥文件检索它们,但是想知道为什么我的工作应该执行从GCS读取凭据的任务。