我有一个模型必须处于以下互斥状态之一:New、In Progress或Closed。
该应用程序允许用户保存记录,然后通过提供匹配状态列表来检索它们。
我继承了一个 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) 我对 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 豁免?
在 的这个大理石图中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)
在本文中,如何为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)
由于输出被写入文件,简单的重定向操作符>对我来说很好.
此运算符是否意味着重定向到管道?如果是这样,如何重定向到管道不同于仅重定向到文件或仅仅是管道到进程?