小编Jor*_*dan的帖子

同一资源的不同RESTful表示

我的应用程序有一个资源/foo.通常,它由HTTP响应有效负载表示,如下所示:

{"a": "some text", "b": "some text", "c": "some text", "d": "some text"}
Run Code Online (Sandbox Code Playgroud)

客户端并不总是需要此对象的所有四个成员.什么是RESTful语义方式,客户端告诉服务器它在表示中需要什么?例如,如果它想要:

{"a": "some text", "b": "some text", "d": "some text"}
Run Code Online (Sandbox Code Playgroud)

应该怎么GET做?一些可能性(如果我误解了REST,我正在寻找纠正):

  • GET /foo?sections=a,b,d.
    • 查询字符串(毕竟称为查询字符串)似乎意味着"找到符合此条件的资源并告诉我它们",而不是"根据此自定义向我表示此资源".
  • GET /foo/a+b+d我最喜欢的REST语义不包括这个问题,因为它简单.
    • 打破URI不透明度,违反HATEOAS.
    • 似乎打破了资源(URI的唯一含义是识别一种资源)和表示之间的区别.但这是有争议的,因为它与/widgets代表一个可呈现的/widget/<id>资源列表是一致的,我从来没有遇到过这样的问题.
  • 放松我的约束,响应GET /foo/a等,让客户端根据需要为每个组件发出请求/foo.
    • 将开销相乘,如果/foo有数百个组件且客户端需要100个组件,这可能会成为一场噩梦.
    • 如果我想支持HTML表示/foo,我必须使用Ajax,如果我只想要一个可以被抓取,由极简主义浏览器呈现的HTML页面等,这是有问题的.
    • 为了维护HATEOAS,它还需要链接到其他表示中存在的那些"子资源",可能在/foo:{"a": {"url": "/foo/a", "content": "some text"}, ...}
  • GET /foo,Content-Type: application/json{"sections": ["a","b","d"]}在请求正文中.
    • 不可指定和不可缓存.
    • HTTP没有定义主体语义 …

api rest url web-applications http

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

请求中未接受的Content-Type的HTTP状态代码

对于某些资源,我的REST风格的服务器只接受PUTPOST使用JSON对象请求作为内容主体,因此需要Content-Typeapplication/json,而不是application/x-www-form-urlencodedmultipart/form-data或其他任何东西.

格式错误的JSON(或缺少JSON)返回a,400其中包含直接从JSON解析器引发的异常中获取的错误消息,以进行调试.

哪个HTTP错误代码意味着客户端发送了一个不可接受的请求Content-Type,即使服务器可以在技术上解析请求内容?

rest http http-status-codes mime-types http-request

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

在Tornado中禁用静态文件缓存

默认情况下,Tornado会在a Cache-Control: public提供的任何文件上放置标题StaticFileHandler.怎么能改成Cache-Control: no-cache

python caching tornado static-files

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

用于搜索引擎样式搜索的JavaScript库?

是否有一个JavaScript库可以确定字符串是否与搜索查询匹配?它应该是高效的,并提供类似Google或LexisNexis的高级查询功能(诸如和/或运算符,同义词和括号之类的东西).任何类型的高级搜索功能都会很棒; 它不必与任何特定搜索引擎完全匹配.

动机:我有一个HTML页面,其中包含一个搜索框,后跟一堆段落(它们具有唯一ID,并且是从JavaScript数组生成的).当用户在框中键入搜索查询并按Enter键时,如果它们与查询不匹配,则应隐藏所有段落(即display设置为none).

我目前的策略(使用jQuery):

  1. 通过将查询字符串拆分为空格,将查询字符串分隔为关键字数组.
  2. 隐藏所有段落$('p').hide().
  3. 对于每个关键字,显示包含它的段落$('p:contains("'+keyword+'")').show().

这是一个非常有限的搜索功能,是区分大小写的,把所有的关键字为可选,并没有提供像运营商and,or或小括号.这也是效率低下的,因为即使已经匹配,它也会为每个关键字遍历每个字符串一次.

javascript search

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

混合并匹配State monad中的有状态计算

我的程序的状态包含三个值,a,b,和c,类型A,BC.不同的功能需要访问不同的值.我想使用Statemonad 编写函数,以便每个函数只能访问它需要访问的状态段.

我有以下四种类型的功能:

f :: State (A, B, C) x
g :: y -> State (A, B) x
h :: y -> State (B, C) x
i :: y -> State (A, C) x
Run Code Online (Sandbox Code Playgroud)

以下是我打电话的g内容f:

f = do
    -- some stuff
    -- y is bound to an expression somewhere in here
    -- more stuff
    x <- g' y
    -- even more stuff …
Run Code Online (Sandbox Code Playgroud)

monads haskell functional-programming

14
推荐指数
1
解决办法
231
查看次数

JavaScript可以设置哪些HTTP标头?

W3C是否指定XMLHttpRequest可以设置哪些HTTP头?如果是这样,他们是否出于安全原因发布了证明这些要求的文件?

是否由浏览器自行决定限制HTTP标头?如果是这样,是否有在线文档或文档集合列出了不同XHR实现的怪癖,或者是否有必要在每个实现的文档中找到该信息?

javascript http xmlhttprequest http-headers

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

为什么引用SQLite rowid会导致外键不匹配?

SQLite version 3.7.9 2011-11-01 00:52:41
sqlite> PRAGMA foreign_keys = 1;
sqlite> CREATE TABLE foo(name);
sqlite> CREATE TABLE bar(foo_rowid REFERENCES foo(rowid));
sqlite> INSERT INTO foo VALUES('baz');
sqlite> SELECT rowid, name FROM foo;
1|baz
sqlite> INSERT INTO bar (foo_rowid) VALUES (1);
Error: foreign key mismatch
Run Code Online (Sandbox Code Playgroud)

为什么会出现此错误?这是一个DML错误,但我不知道出了什么问题,因为:

  • foo 存在.
  • foo.rowid 存在.
  • foo.rowidfoo唯一性的主要关键因素.
  • bar.foo_rowid是一列,它匹配一列的事实foo.rowid.

sql database sqlite foreign-keys relational-database

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

WeakValueDictionary保留对对象的引用,没有更强的引用

>>> from weakref import WeakValueDictionary
>>> class Foo(object):
...     pass
>>> foo = Foo()
>>> db = WeakValueDictionary()
>>> db['foo-id'] = foo
>>> del foo
>>> dict(db)
{'foo-id': <__main__.Foo object at 0x4dd946c>}
Run Code Online (Sandbox Code Playgroud)

为什么它显示这个而不是空字典?请注意,此代码生成我期望的结果:

>>> db2 = WeakValueDictionary()
>>> db2['disposable-id'] = Foo()
>>> dict(db2)
{}
Run Code Online (Sandbox Code Playgroud)

执行脚本(而不是交互式解释器)时,它的行为也符合预期:

from weakref import WeakValueDictionary
class Foo(object):
    pass
foo = Foo()
db = WeakValueDictionary()
db['foo-id'] = foo
del foo
print str(dict(foo))
# prints {}
Run Code Online (Sandbox Code Playgroud)

python mapping weak-references python-2.7

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

#define导致"预期的主表达式"错误

#define N 10;

int main()
{
    int x;

    for (int i=0; i<N; i++)
        x = i;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

用g ++编译的结果:

test-define.cpp: In function ‘int main()’:
test-define.cpp:7:22: error: expected primary-expression before ‘;’ token
test-define.cpp:7:22: error: expected ‘)’ before ‘;’ token
test-define.cpp:7:24: error: name lookup of ‘i’ changed for ISO ‘for’ scoping [-fpermissive]
test-define.cpp:7:24: note: (if you use ‘-fpermissive’ G++ will accept your code)
test-define.cpp:7:27: error: expected ‘;’ before ‘)’ token
Run Code Online (Sandbox Code Playgroud)

但是当我将第7行更改为时,它编译得很好for (int i=0; i<10; i++).

为什么这样,我如何使用该#define指令来实现我想要的?

c++ c-preprocessor

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

在 contenteditable 元素中,在 HTML 标签之间移动光标

http://jsfiddle.net/Y7tgx/2/

Firefox 比 Chrome 处理得更好,但都不是我想要的方式。它们都将所有相邻的 HTML 标签混在一起并将它们视为一个(我不想要)。

Firefox:当光标位于一个标签(或一组相邻标签)的左侧并且您向右按时,光标会跳过标签前面的第一个字符。然后,如果您按左键,它会在字符和标签之间移动。(左右按相同。)

Chrome:标签和它后面的第一个字符混在一起。无法将光标置于标记和后续字符之间。

期望:标签被视为相对于光标的单个字符。如果光标位于标签的左侧,而您按向右,则光标应移到标签的右侧,反之亦然,按向左。

如何在浏览器上强制执行所需的行为?

这不适用于 WYSIWIG 编辑器。为了达到特定目的,标签在生产中以视觉方式表示,就像它们在 jsfiddle 中一样。用户希望任意控制包含光标的元素。

b:before, b:after,
i:before, i:after,
p:before, p:after {
    color: blue;
}

b:before {
    content: '<b>';
}

b:after {
    content: '</b>';
}

p:before {
    content: '<p>';
}

p:after {
    content: '</p>';
}

i:before {
    content: '<i>';
}

i:after {
    content: '</i>';
}?

----------

<p contenteditable='true'>regular regular<b>bold</b>regular - 
try moving the cursor to either side of either blue tag.</p>
<p contenteditable='true'>try it in this: regular<b><i>bolditalic</i></b></p>
Run Code Online (Sandbox Code Playgroud)

html javascript contenteditable

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