我有一个HttpHandler,它根据查询字符串调整图像大小,所以请求类似于:
将为您提供320x240的重新调整大小的图像.
在IIS Manager下面Handler Mappings,我将处理程序的路径映射为*.jpg,*.gif,*.bmp,*.png.但是,这不会激活处理程序.如果我把它改成只是*.jpg,那就行了.
我的问题是,我是否必须创建4个单独的映射条目,每个映像类型一个,或者是否有某种方法可以在一个路径中组合多个扩展?
我有一个使用AJAX从服务器获取JSON数据的Web应用程序.它要求用户首先使用浏览器登录,以便设置cookie.仅使用GET和POST谓词,其中GET用于检索数据,POST用于修改数据的任何操作.
据我所知,REST与上述方法的不同之处在于,每次请求都会发送用户认证信息,PUT并且DELETE也会使用和动词.
我的问题是,如果终点只是用户的浏览器,那么REST Web服务对类似RPC的方法有什么好处?我可以理解当客户端未知时REST是如何有益的,但是当我只使用jQuery ajax调用时,与类似RPC的方法相比,它的好处还是值得吗?
我们假设我有商店,商店货架和货架上的产品.因此,为了获得商店货架上的产品列表,我将使用以下请求:
GET http://server/stores/123/shelves/456/products
Run Code Online (Sandbox Code Playgroud)
从这里,我如何获得个别产品?我应该使用:
GET http://server/products/789
Run Code Online (Sandbox Code Playgroud)
要么:
GET http://server/stores/123/shelves/456/products/789
Run Code Online (Sandbox Code Playgroud)
第一种方法更简洁,因为一旦获得产品列表,如果您只想查看特定产品的详细信息,则不关心它属于哪个商店.但是,第二种方法更符合逻辑,因为您正在查看特定商店中特定货架的产品.
同样,PUT/DELETE操作怎么样?
DELETE http://server/stores/123/shelves/456/products/789
Run Code Online (Sandbox Code Playgroud)
要么:
DELETE http://server/products/789
Run Code Online (Sandbox Code Playgroud)
为这样的树层次结构设计模式的正确方法是什么?
PS如果我误解了有关REST架构的一些内容,请提供有关如何使其更好的示例.有太多人喜欢说"REST不是CRUD"和"REST不是RPC",然后绝对没有提供良好RESTful设计的澄清或示例.
我有一个Grails服务,它通过执行HTTP调用使用第三方服务发送电子邮件:
class EmailService {
def sendEmail(values) {
def valueJson = values as JSON
... // does HTTP call to 3rd party service
}
}
Run Code Online (Sandbox Code Playgroud)
我编写了一个单元测试来测试这个服务(因为集成测试会旋转Hibernate和整个域框架,我不需要):
@TestFor(EmailService)
class EmailServiceTests {
void testEmailServiceWorks() {
def values = [test: 'test', test2: 'test2']
service.sendEmail(values)
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当我执行此单元测试时,它在尝试进行as JSON转换时失败并出现此异常:
org.apache.commons.lang.UnhandledException:org.codehaus.groovy.grails.web.converters.exceptions.ConverterException:类的Unconvertable对象:java.util.LinkedHashMap
然后,我重新编写了单元测试,以便执行以下操作:
void testEmailServiceWorks() {
def value = [test: 'test', test2: 'test2']
def valueJson = value as JSON
}
Run Code Online (Sandbox Code Playgroud)
当我尝试进行as JSON转换时,我得到了同样的异常.
有谁知道为什么我得到这个例外,我怎么能解决它?
我想用cURL测试服务器上的洪水处理.现在我在Windows命令行上使用它:
curl www.example.com
Run Code Online (Sandbox Code Playgroud)
这将GET在页面一次.我现在想做同样的事情,除了一个请求,我想一次生成至少10个请求.我该怎么做?
可能的虚拟路径:
/folder1/folder2/image.jpg
~/folder1/folder2/image.jpg
folder1/folder2/image.jpg
Run Code Online (Sandbox Code Playgroud)
具体路径:
C:\folder1\folder2\image.jpg
D:\folder1\folder2\image.jpg
C:/folder1/folder2/image.jpg
C:/folder1\folder2/image.jpg
Run Code Online (Sandbox Code Playgroud)
如何以不容易失败的方式检查路径是否为虚拟路径?我问的原因是因为当我Server.MapPath()在具体路径上使用它时会抛出异常.但是,我传递的内容Server.MapPath()可以是我上面提供的任何一个示例,我不知道它在运行时之前是什么.
用于验证的Grails 2.0.4文档向您展示了如何在页面顶部显示错误消息以及如何在字段无效时如何向元素添加css类,但它不会告诉您如何显示错误消息在字段本身旁边,这样的事情:
-----------------------
Name: | | You must enter a name!
-----------------------
Run Code Online (Sandbox Code Playgroud)
如何检索无效字段的特定错误消息,然后将其显示在字段旁边?
假设我有一个<ul>清单:
<ul class="products">
...
</ul>
Run Code Online (Sandbox Code Playgroud)
我想用jQuery选择它,然后为该对象添加一些函数.例如,我想添加一个addProduct(productData)函数和一个deleteProduct(productId)函数.但是,我希望只将函数添加到选择器返回的对象中.例如,像这样:
var productList = $.extend($('ul.products'), {
addProduct: function(productData) {
// add a new li item
},
deleteProduct: function(productId) {
// delete li with id
}
});
Run Code Online (Sandbox Code Playgroud)
我如何使用jQuery做到这一点?这里的关键点是我只想将函数添加到jQuery选择器返回的实例中.换句话说,我不想修改jQuery的原型或创建插件,因为这些将使所有函数都可用,而我只想将函数添加到一个特定的实例.
我有一个实体及其映射:
public class Test
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual string Description { get; set; }
}
public class TestMap : EntityMap<Test>
{
public TestMap()
{
Id(x => x.Id);
Map(x => x.Name);
Map(x => x.Description);
}
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试对它运行查询(将其从数据库中取出):
var keyword = "test" // this is coming in from the user
keyword = keyword.ToLower(); // convert it to all lower-case
var results = session.Linq<Test>
.Where(x => x.Name.ToLower().Contains(keyword));
results.Count(); …Run Code Online (Sandbox Code Playgroud) 我的Grails应用程序中有以下行将默认时区设置为UTC:
TimeZone.setDefault(TimeZone.getTimeZone("UTC"))
Run Code Online (Sandbox Code Playgroud)
我有一个Audit带有dateCreated字段的实体:
class Audit {
Date dateCreated
String message
}
Run Code Online (Sandbox Code Playgroud)
然后我创建并保存它的一个实例:
def audit = new Audit(message: "Testing audit message")
Run Code Online (Sandbox Code Playgroud)
这会将其作为UTC时间正确保存到我的数据库中.但是,当我尝试阅读它时:
audit = Audit.get(1)
Run Code Online (Sandbox Code Playgroud)
时间戳将作为本地时间回读.因此,如果我的时区是+1 UTC并且当前本地时间是BST的12:34:56,那么将保存到数据库的是11:34:56,但是当我读回它时,它变为11:34:56 BST.有没有人知道如何解决这个问题,以便Grails将时间戳读回UTC并相应地转换它?