我正在寻找一种合理的方式将搜索表示为RESTful URL.
设置:我有两个模型,汽车和车库,汽车可以在车库.所以我的网址看起来像:
/car/xxxx
xxx == car id
returns car with given id
/garage/yyy
yyy = garage id
returns garage with given id
Run Code Online (Sandbox Code Playgroud)
汽车可以独立存在(因此/汽车),也可以存在于车库中.例如,在给定车库中代表所有车辆的正确方法是什么?就像是:
/garage/yyy/cars ?
Run Code Online (Sandbox Code Playgroud)
车库yyy和zzz中的汽车联盟怎么样?
什么是代表搜索具有某些属性的汽车的正确方法?说:给我看看所有带4扇门的蓝色轿车:
/car/search?color=blue&type=sedan&doors=4
Run Code Online (Sandbox Code Playgroud)
或者它应该是/汽车而不是?
使用"搜索"似乎不合适 - 什么是更好的方式/术语?应该只是:
/cars/?color=blue&type=sedan&doors=4
Run Code Online (Sandbox Code Playgroud)
搜索参数应该是PATHINFO还是QUERYSTRING的一部分?
简而言之,我正在寻找跨模型REST网址设计和搜索的指导.
[更新]我喜欢贾斯汀的答案,但他没有涉及多字段搜索案例:
/cars/color:blue/type:sedan/doors:4
Run Code Online (Sandbox Code Playgroud)
或类似的东西.我们怎么样
/cars/color/blue
Run Code Online (Sandbox Code Playgroud)
到多场案件?
如何在a和b之间线性地映射数字以在c和d之间进行.
也就是说,我希望2到6之间的数字映射到10到20之间的数字......但我需要一般化的情况.
我的大脑是油炸的.
这个问题实际上涉及翻滚,我将在下面概括如下:
我有一个2D视图,我在屏幕上的一个区域内有许多矩形.我如何展开这些盒子,使它们不会相互重叠,但只能用最小的移动来调整它们?
矩形的位置是动态的,取决于用户的输入,因此它们的位置可以是任何位置.
附
图像显示问题和所需的解决方案
实际上,现实问题涉及翻车.
答案中的问题
矩形的大小不固定,并且取决于翻转中文本的长度
关于屏幕尺寸,现在我认为最好假设屏幕的大小足以容纳矩形.如果有太多的矩形并且算法没有解决方案,那么我只需要调整内容.
"最小化"的要求更多的是为了美学而非绝对的工程要求.人们可以通过在两个矩形之间添加一个很大的距离来分隔两个矩形,但它作为GUI的一部分看起来不太好.我们的想法是使翻转/矩形尽可能接近其源(我将用黑线连接到源).所以要么'只为x移动一个'或'移动两个x'都可以.
让我们假设有两个资源Binder,并Doc具有关联关系意味着Doc和Binder自己站.Doc可能属于也可能不属于Binder且Binder可能为空.
如果我想设计一个REST API,允许用户发送一个Docs 的集合,在单个请求中,如下所示:
{
"docs": [
{"doc_number": 1, "binder": 1},
{"doc_number": 5, "binder": 8},
{"doc_number": 6, "binder": 3}
]
}
Run Code Online (Sandbox Code Playgroud)
对于每个文档docs,
doc存在则将其分配给Binderdoc不存在,请创建它然后分配它我真的很困惑这应该如何实现:
/binders/docs?有一个像这样的简单Python类:
class Spam(object):
__init__(self, description, value):
self.description = description
self.value = value
Run Code Online (Sandbox Code Playgroud)
我想检查以下约束:
我应该:
1.在创建垃圾邮件对象之前验证数据?
2.检查__init__方法数据?
3. is_valid在垃圾邮件类上创建一个方法并使用spam.isValid()调用它?
4. is_valid在Spam类上创建一个静态方法,并使用Spam.isValid(描述,值)调用它?
5.检查制定者声明的数据?
6.等
你能推荐一款设计精良的/ Pythonic /非冗长(具有多种属性的课程)/优雅的方法吗?
我使用@Scheduled注释在Spring中定义具有cron样式模式的预定作业.
cron模式存储在配置属性文件中.实际上有两个属性文件:一个默认配置,一个依赖于环境的配置文件配置(例如dev,test,prod customer 1,prod customer 2等)并覆盖一些默认值.
我在spring上下文中配置了一个属性占位符bean,它允许我使用${}样式占位符从我的属性文件中导入值.
作业bean看起来像这样:
@Component
public class ImagesPurgeJob implements Job {
private Logger logger = Logger.getLogger(this.getClass());
@Override
@Transactional(readOnly=true)
@Scheduled(cron = "${jobs.mediafiles.imagesPurgeJob.schedule}")
public void execute() {
//Do something
//can use DAO or other autowired beans here
}
}
Run Code Online (Sandbox Code Playgroud)
我的上下文XML的相关部分:
<!-- Enable configuration of scheduled tasks via annotations -->
<task:annotation-driven/>
<!-- Load configuration files and allow '${}' style placeholders -->
<bean class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:config/default-config.properties</value>
<value>classpath:config/environment-config.properties</value>
</list>
</property>
<property name="ignoreUnresolvablePlaceholders" value="true"/>
<property name="ignoreResourceNotFound" …Run Code Online (Sandbox Code Playgroud) 我已经和VBA合作了很长一段时间了,但我对错误处理仍然不太了解.
一篇好文章是CPearson.com的文章
但是我仍然想知道我以前使用ErrorHandling的方式是否完全错误: 第1块
On Error Goto ErrCatcher
If UBound(.sortedDates) > 0 Then
// Code
Else
ErrCatcher:
// Code
End If
Run Code Online (Sandbox Code Playgroud)
if子句,因为如果它是真的,它将被执行,如果它失败,Goto将进入Else-part,因为数组的Ubound不应该为零或更少,没有Error,这种方法工作得很好至今.
如果我理解正确,它应该是这样的: 第2块
On Error Goto ErrCatcher
If Ubound(.sortedDates) > 0 Then
// Code
End If
Goto hereX
ErrCatcher:
//Code
Resume / Resume Next / Resume hereX
hereX:
Run Code Online (Sandbox Code Playgroud)
或者甚至像这样: 第3座
On Error Goto ErrCatcher
If Ubound(.sortedDates) > 0 Then
// Code
End If
ErrCatcher:
If Err.Number <> 0 then
//Code
End If
Run Code Online (Sandbox Code Playgroud)
我看到的最常见的方式是,一个错误"Catcher"位于sub的末尾,Sub实际上以"Exit Sub"结束,但是如果Sub是相当的话,它不会有点混乱如果你反之亦然阅读代码?
第4座
以下代码的来源: CPearson.com …
我有一个整数值,我需要检查它是否为NULL.我使用null-coalescing运算符得到它
C#:
public int? Age;
if ((Age ?? 0)==0)
{
// do somethig
}
Run Code Online (Sandbox Code Playgroud)
现在我必须检查一个旧的应用程序,其中声明部分不是三元组.那么,如何在没有null合并运算符的情况下实现这一点.
我试图通过python运行一个宏,但我不知道如何让它工作......
到目前为止,我已经得到了以下代码,但它不起作用.
import win32com.client
xl=win32com.client.Dispatch("Excel.Application")
xl.Workbooks.Open(Filename="C:\test.xlsm",ReadOnly=1)
xl.Application.Run("macrohere")
xl.Workbooks(1).Close(SaveChanges=0)
xl.Application.Quit()
xl=0
Run Code Online (Sandbox Code Playgroud)
我得到以下回溯:
Traceback (most recent call last):
File "C:\test.py", line 4, in <module>
xl.Application.Run("macrohere")
File "<COMObject <unknown>>", line 14, in Run
File "C:\Python27\lib\site-packages\win32com\client\dynamic.py", line 282, in _ApplyTypes_
result = self._oleobj_.InvokeTypes(*(dispid, LCID, wFlags, retType, argTypes) + args)
com_error: (-2147352567, 'Exception occurred.', (0, u'Microsoft Excel', u"Cannot run the macro 'macrohere'. The macro may not be available in this workbook or all macros may be disabled.", u'xlmain11.chm', 0, -2146827284), None)
Run Code Online (Sandbox Code Playgroud)
import win32com.client
xl=win32com.client.Dispatch("Excel.Application") …Run Code Online (Sandbox Code Playgroud)