小编SB2*_*055的帖子

WebAPI中实体的RESTful归档

我已经在我的WebAPI项目中非常安静地实现了CRUD功能.我现在正在尝试实现对象存档(不完全删除) - 如果只有ARCHIVEHTTP方法.

我看到两个选择:

1)具有isArchived每个可归档实体的属性,即使归档与请求无关,也必须包含在PUT和POST请求中.归档一个实体将是一个调用PUT /api/object/idisArchived设置为true的问题.看起来很笨重而且很安静.

2)拥有一个PUT /api/object/id/archive不需要身体的RPC-ish网址.似乎最有效但不安宁.

每个人在"通过api呼叫存档我的东西"空间中做了什么?

rest web-applications asp.net-web-api single-page-application

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

Breeze和RESTful WebAPI

题:

当我需要在WebAPI中为每个实体实现自己的POST/PUT/GET端点时,breeze提供了什么价值?

背景:

似乎是服务器端Breeze控制器的常见实现:

[BreezeController]
public class TodosController : ApiController {

    readonly EFContextProvider<TodosContext> _contextProvider =
        new EFContextProvider<TodosContext>();

    // ~/breeze/todos/Metadata
    [HttpGet]
    public string Metadata() {
        return _contextProvider.Metadata();
    }

    // ~/breeze/todos/Todos
    // ~/breeze/todos/Todos?$filter=IsArchived eq false&$orderby=CreatedAt
    [HttpGet]
    public IQueryable<TodoItem> Todos() {
        return _contextProvider.Context.Todos;
    }

    // ~/breeze/todos/SaveChanges
    [HttpPost]
    public SaveResult SaveChanges(JObject saveBundle) {
        return _contextProvider.SaveChanges(saveBundle);
    }

    // other miscellaneous actions of no interest to us here
}
Run Code Online (Sandbox Code Playgroud)

我正在构建一个RESTish API,到目前为止,它具有以下端点:

GET /api/todo/1
PUT /api/todo
POST /api/todo
Run Code Online (Sandbox Code Playgroud)

似乎Breeze要求端点更简单(无论好坏) - 只是一堆GETS和一个SaveChanges POST端点.

这让我觉得Breeze使用单个Web客户端进行快速开发,轻而易举......但是只要您拥有匿名客户端,就必须强制它们进入您在客户端创建的任何微风界面约定,这似乎打败了RESTful API设计的目的.是这样的吗?

breeze

9
推荐指数
1
解决办法
5126
查看次数

使用WebRTC MediaRecorder录制跨平台(H.264?)视频

我的MediaRecorder实现指定了以下内容:

const getMediaRecorderOptions = function () {
    var options = { mimeType: "video/webm;codecs=vp8" }; // 9 was lagggy, cpu-intensive

    if (!MediaRecorder.isTypeSupported(options.mimeType)) {
        logger.recorderLog(options.mimeType + " is not Supported");
        options = { mimeType: "video/webm;codecs=vp8" };

        if (!MediaRecorder.isTypeSupported(options.mimeType)) {
            logger.recorderLog(options.mimeType + " is not Supported");
            options = { mimeType: "video/webm" };

            if (!MediaRecorder.isTypeSupported(options.mimeType)) {
                logger.recorderLog(options.mimeType + " is not Supported");
                options = { mimeType: "" };
            }
        }
    }
    return options;
}
Run Code Online (Sandbox Code Playgroud)

显然,这仅适用于iOS Safari或MacOS不支持的webm.我试图避免加倍存储并引入编码复杂性.Chrome上的MediaRecorder是否可以任何平台直接录制跨平台容器格式?

mp4 google-chrome h.264 webm webrtc

9
推荐指数
1
解决办法
1336
查看次数

如何使用css在悬停时使整个div更改颜色?

我有以下内容:

    <div id="side-menu" class="sidebar-nav span2">
        <div class="sidebar-link"><span>Link 1</span></div>
        <div class="sidebar-link"><span>Link 2</span></div>
    </div>
Run Code Online (Sandbox Code Playgroud)

当你将鼠标悬停在它们上面时,我试图让两个div中的每一个都改变颜色 - 无论你是否将鼠标悬停在文本右侧或左侧的文本上.目前只有当我将鼠标悬停在文本上时颜色才会发生变化.知道如何做到这一点?这是我用css的小提琴:

http://jsfiddle.net/PTSkR/56/

css css3

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

使用history.pushState后检测浏览器后退按钮

我有一个三阶段登录表单,在进行进度时显示/隐藏页面上的内容.当用户从步骤1进入步骤2时,我调用以下内容:

var stateObj = { foo: "bar" };
history.pushState(stateObj, "", "");
Run Code Online (Sandbox Code Playgroud)

我看到浏览器后退按钮启用.

现在,我正试图抓住后退按钮点击,这样我就可以隐藏/显示内容(例如 - 回到第1阶段).

如何在此方案中检测浏览器后退按钮?我不希望URL改变,我只想在用户回击时调用一些JS函数.我的目标是现代桌面/移动浏览器.

html javascript jquery

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

RTC 对等连接 - 接收流两次

我有一个RTCPeerConnectionwithontrack定义的实例:

 newConnection.ontrack = receivedStream // remote
Run Code Online (Sandbox Code Playgroud)

一旦 SDP 交换完成并且对等方添加其本地流:

 connection.addStream(stream); // local
Run Code Online (Sandbox Code Playgroud)

我看到receivedStream每个流被调用两次 - 检查e.track显示第一次调用是针对audio轨道的,第二次是针对video轨道的。

奇怪的是,检查e.streams[0]和调用getTracks这个给了我两个MediaStreamTracks- 一个用于音频,另一个用于视频:

在此处输入图片说明

因此,尽管调用了一次,但 我还是在两次调用中获得了四个MediaStreamTracksreceivedStreamaddStream

receivedStream 在这儿:

 function receivedStream(e) {
        var stream = e.streams[0]; // this gets invoked twice when adding one stream!
        if (!stream) {
            throw new Error("no stream found");
        };
        // this gets me the corresponding connection
        waitForStream(stream.id).then(function (connection) …
Run Code Online (Sandbox Code Playgroud)

javascript webrtc

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

jQuery up键/向下键按键检测不起作用?

在以下代码中:

$(document).keypress(function(e) {
        var code = (e.keyCode ? e.keyCode : e.which);
        if (code == 40) {
            alert("down pressed");
        } else if (code == 38) {
            alert("up pressed");
        }
    });
Run Code Online (Sandbox Code Playgroud)

我正在尝试检测是否按下了向下键或向上键.为什么不工作?

小提琴 http://jsfiddle.net/K9uDn/10/

我是铬

javascript jquery

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

WebAPI CORS - 为什么OPTIONS请求进入我的控制器?

我有CORS使用以下内容:

[System.Web.Http.HttpPut]
[System.Web.Http.AcceptVerbs("OPTIONS")]
[System.Web.Http.Route("api/exercise")]
public HttpResponseMessage UpdateExercise(Exercise exercise) {
    try {
        _adminService.UpdateExercise(exercise);
        return Request.CreateResponse(HttpStatusCode.OK, "Success");
    } catch (Exception e) {
        return Request.CreateResponse(HttpStatusCode.InternalServerError, e);
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的global.asax:

protected void Application_BeginRequest() {
    if (Request.Headers.AllKeys.Contains("Origin") && Request.HttpMethod == "OPTIONS") {
        Response.Flush();
    }
}
Run Code Online (Sandbox Code Playgroud)

但是有些奇怪的事情正在发生 - 如果我在控制器中设置断点,OPTIONS请求会通过null练习进入内部.为什么会这样?我希望Flush()能防止这种情况发生.

就目前而言,我需要为所有对CORS敏感的端点(PUT,DELETE)添加null检查.这看起来不太优雅......我应该能够阻止OPTIONS请求命中控制器逻辑,而只是直接响应所需的标题吗?

cors http-options-method asp.net-web-api asp.net-web-api2

7
推荐指数
1
解决办法
2465
查看次数

异步启动多个任务并等待它们完成

我有一种情况,我希望异步启动用户定义的任务数,并等待所有任务完成.简化,这是我正在处理的:

[TestMethod]
public async Task Start() {
        var numDrivers = 2;
        while (numDrivers != 0) {
            var rnd = new Random();
            var r = rnd.Next(itemArray.Count);
            var target = itemArray[r];
            var proxyDriver = GetProxiedDriver();
            Task.Run(() => HandleIntro(proxyDriver, target));
            numDrivers--;
        }
 }
Run Code Online (Sandbox Code Playgroud)

对于某些上下文 - 这些是Selenium webdrivers开始运行一些UI测试.我看到浏览器弹出,但是一旦Task.Run()完成,所有执行都会停止.n在停止执行之前,如何在等待所有驱动程序完成之前触发驱动程序以异步方式运行?

我已经尝试了await Task.Run(() => HandleIntro(proxyDriver, target));但这等待任务,他们不会同时运行.

HandleIntro:

private async Task HandleIntro(FirefoxDriver driver, string target) {
    // do stuff
}
Run Code Online (Sandbox Code Playgroud)

.net c# asynchronous task-parallel-library async-await

7
推荐指数
1
解决办法
1313
查看次数

Azure Staging <>生产交换不是无缝的 - 需要再次热身

大约一年前,Azure Web App插槽交换是"无缝的" - 一旦完成,新实例就会热身接受新请求而不会有任何延迟.

现在,当我交换插槽STAGINGPRODUCTION,即使在运行测试STAGING以对应用程序进行预热之后,交换也会产生许多预热时间.

这怎么可能改变,我该怎么做才能确保我的应用程序在交换期间保持100%可访问?

azure azure-web-sites azure-web-app-service

7
推荐指数
1
解决办法
2274
查看次数