小编Ed *_*d I的帖子

标志 Enum 和互斥 Enum 具有重叠含义

我有一个模型必须处于以下互斥状态之一:NewIn ProgressClosed

该应用程序允许用户保存记录,然后通过提供匹配状态列表来检索它们。

我继承了一个 SQL 数据库,其中状态存储为表示按位标志的整数。我必须调用一个通过按位运算进行匹配的过程:

CREATE PROCEDURE SearchByState
    @MatchingStates       int
AS
BEGIN
    SELECT Id, State
    FROM Records
    WHERE @MatchingStates & State > 0
END;
GO
Run Code Online (Sandbox Code Playgroud)

这对我来说一切都很好。

现在,在 C# 实现中,很明显我应该定义标志来表示查询中匹配状态的组合:

[Flags]
public enum States
{
    None = 0x0,
    New= 0x1,
    InProgress = 0x2,
    Closed = 0x4,
    All = New | InProgress | Closed
}
Run Code Online (Sandbox Code Playgroud)

问题是记录的模型必须具有表示单个状态的属性。

问题是,这个记录的模型的State属性的类型应该是什么:

1)只需使用枚举标志:

public class Record
{
    public int Id { get; set; }

    // Must ensure the value is …
Run Code Online (Sandbox Code Playgroud)

.net c# enums flags

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

Django REST Framework 可浏览 API 的不同版本控制方案

我对 API 的要求是不允许使用默认版本。所有客户端都需要明确指定任何资源的版本。我通过以下配置实现了这一点:

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'oauth2_provider.ext.rest_framework.OAuth2Authentication',
        'rest_framework.authentication.SessionAuthentication',
    ),
    'DEFAULT_PERMISSION_CLASSES': (
        'rest_framework.permissions.IsAuthenticated',
    ),
    'DEFAULT_VERSIONING_CLASS': 'rest_framework.versioning.AcceptHeaderVersioning',
    'ALLOWED_VERSIONS': ['2.0'],
    'DEFAULT_RENDERER_CLASSES': (
        'api.renderers.CustomJSONRenderer',
        'rest_framework.renderers.BrowsableAPIRenderer',
    ),
}
Run Code Online (Sandbox Code Playgroud)

这很好用,但是我失去了使用可浏览的 API 渲染器的能力:

HTTP 406 Not Acceptable
Allow: GET
Content-Type: application/vnd.acme+json
Vary: Accept

{
    "detail": "Invalid version in \"Accept\" header."
}
Run Code Online (Sandbox Code Playgroud)

我想指定,如果对可浏览的 API 发出请求,则默认版本应为 2.0。原因是,在尝试可浏览的 API 时,默认版本应该是最新版本,但是当以编程方式使用 API 时,用户不应该因为忽略指定其版本而暴露于重大更改。

如何使我的 API 需要版本,但允许可浏览的 API 豁免?

python django django-rest-framework

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

如何阅读 RxJs mergeMap 大理石图

在 的这个大理石图中mergeMap,你怎么读这个表达式?

// Kind of, looks like an em-dash near the end
mergeMap(i => 10*i--10*i--10*i--|)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

javascript rxjs marble-diagram

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

什么> | 在bash做什么?

在本文中,如何为RPM创建修补程序文件,有以下命令:

diff -ru base-1.4.4-orig base-1.4.4 >| $HOME/rpmbuild/SOURCES/base-1.4.4-f12.patch
Run Code Online (Sandbox Code Playgroud)

由于输出被写入文件,简单的重定向操作符>对我来说很好.

此运算符是否意味着重定向到管道?如果是这样,如何重定向到管道不同于仅重定向到文件或仅仅是管道到进程?

bash

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