我正在设计一个API来通过HTTP,我想知道是否使用HTTP POST命令,但只使用URL查询参数而没有请求体,是一个很好的方法.
注意事项:
Content-Length: 0必须明确添加标头.通过URL查询而不是请求体在POST请求上发送参数是否还有其他缺陷或优势?
编辑:正在考虑的原因是操作不是幂等的,并且除了检索之外还有副作用.请参阅HTTP规范:
特别是,已经建立了这样的惯例:GET和HEAD方法不应该具有采取除检索之外的动作的重要性.这些方法应该被认为是"安全的".这允许用户代理以特殊方式表示其他方法,例如POST,PUT和DELETE,以便使用户意识到正在请求可能不安全的操作.
...
方法也可以具有"幂等"的属性(除了错误或到期问题)N> 0个相同请求的副作用与单个请求相同.方法GET,HEAD,PUT和DELETE共享此属性.此外,方法OPTIONS和TRACE不应该有副作用,因此本质上是幂等的.
客户有一个简单的增加订单号(1,2,3 ......).他希望最终用户收到8位或9位数字(仅数字 - 无字符)"随机"数字.显然,这个"随机"数字实际上必须是唯一且可逆的(它实际上是对actualOrderNumber的加密).
我的第一个想法是只是洗牌一些.当我向客户展示一个样本序列时,他抱怨随后的obfuscOrderNumbers正在增加,直到它们达到"shuffle"点(低位比特发挥作用的点).他希望obfuscOrderNumbers尽可能随机看似.
我的下一个想法是确定性地播种线性同余伪随机数生成器,然后获取actualOrderNumber值.但在这种情况下,我需要担心碰撞 - 客户想要一种保证不会在至少10 ^ 7个周期内发生碰撞的算法.
我的第三个想法是"呃,只是对加密的东西进行加密",但如果我使用股票加密库,我必须对其进行后期处理才能获得8位或9位数的要求.
我的第四个想法是将actualOrderNumber的位解释为格雷编码的整数并返回.
我的第五个问题是:"我可能会过度思考这个问题.我敢打赌,StackOverflow上的某个人可以用几行代码完成这项工作."
我需要删除包含只读文件的目录.哪种方法更好:
使用DirectoryInfo.Delete(),或,
ManagementObject.InvokeMethod("Delete")?
有了DirectoryInfo.Delete(),我必须手动关闭每个文件的只读属性,但ManagementObject.InvokeMethod("Delete")似乎不需要.有没有人比另一个人更优先?
示例代码(test.txt是只读的).
DirectoryInfo dir = new DirectoryInfo(@"C:\Users\David\Desktop\");
dir.CreateSubdirectory("Test");
DirectoryInfo test = new DirectoryInfo(@"C:\Users\David\Desktop\Test\");
File.Copy(@"C:\Users\David\Desktop\test.txt", @"C:\Users\David\Desktop\Test\test.txt");
File.SetAttributes(@"C:\Users\David\Desktop\Test\test.txt", FileAttributes.Archive);
test.Delete(true);
Run Code Online (Sandbox Code Playgroud)
DirectoryInfo dir = new DirectoryInfo(@"C:\Users\David\Desktop\");
dir.CreateSubdirectory("Test");
DirectoryInfo test = new DirectoryInfo(@"C:\Users\David\Desktop\Test\");
File.Copy(@"C:\Users\David\Desktop\test.txt", @"C:\Users\David\Desktop\Test\test.txt");
string folder = @"C:\Users\David\Desktop\Test";
string dirObject = "Win32_Directory.Name='" + folder + "'";
using (ManagementObject managementObject = new ManagementObject(dirObject))
{
managementObject.Get();
ManagementBaseObject outParams = managementObject.InvokeMethod("Delete", null,
null);
// ReturnValue should be 0, else failure
if (Convert.ToInt32(outParams.Properties["ReturnValue"].Value) != 0) …Run Code Online (Sandbox Code Playgroud) Microsoft Visual Studio使用XML来保存其.vcproj项目文件.因此,应该很容易区分XML项目文件.
不幸的是,如果您更改任何项目文件的属性,Visual Studio会坚持随机改组项目文件的XML节点!这使得项目文件更改的文本差异和合并基本上不可能.更改一个编译器设置可以使我的视觉差异工具认为我已经改变了文件中50%的行!我甚至尝试了一些XML diff工具,但它们只是显示了一个更加结构化的同样混乱的视图.
有没有人有任何建议.vcproj在源代码管理中维护文件?或者说服Visual Studio 不重新排列.vcproj文件中的XML节点的方法?
(我还研究过使用像CMake这样的工具.vcproj从更加差异友好的文本文件生成文件,但CMake有自己的问题.)
version-control projects-and-solutions project visual-studio
我有2个单独的课程:
1 AreaProperties可以映射到1 FieldProperties.在不改变设计的情况下,我想要一种方法来返回List<>这些对象
C#中的通用集合适合哪些?
我知道我可以发送2个列表,功能看起来像:
public List<AreaProperties> Save(ref List<FieldProperties>)
{
..code
}
Run Code Online (Sandbox Code Playgroud)
编辑:Dror Helper的解决方案听起来不错.但是,我最近发现FieldProperties和AreaProperties之间没有1:1.我现在如何处理这个问题.我仍然希望使用具有FieldProperties和AreaProperties对象的自定义类,但是如何处理1到多个场景?
我很乐意使用,render :json但似乎不那么灵活.这是正确的方法吗?
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @things }
#This is great
format.json { render :text => @things.to_json(:include => :photos) }
#This doesn't include photos
format.json { render :json => @things, :include => :photos }
end
Run Code Online (Sandbox Code Playgroud) 我写了一些Javascript来允许编辑HTML表单中的项目列表,包括添加和删除项目.它在Firefox中运行.在Internet Explorer中尝试时,我发现任何添加的项目都没有随表单一起提交.
长话短说......大量简化,调试,找出触发IE忽略新表单输入的行.所以解决了行为问题.
但现在我必须问:为什么?这是IE漏洞吗?
这是简化的代码:
<html>
<head>
<title>Test</title>
<script type="text/javascript">
function add() {
div = document.getElementById("mylist");
// *** Adding text here works perfectly fine. ***
div.innerHTML += " ";
e = document.createElement("input");
e.setAttribute("type", "text");
e.setAttribute("name", "field3");
e.setAttribute("value", "--NEWVALUE--");
div.appendChild(e);
// *** Adding text here works perfectly fine in Firefox, but for
// Internet Explorer it causes field3 to not be submitted. ***
//div.innerHTML += " ";
}
</script>
</head>
<body>
<form action="" method="get">
<div id="mylist">
<input type="text" name="field1" value="value1" /> …Run Code Online (Sandbox Code Playgroud) 我有一个包含12个表的数据库,其中包含2008年1月至12月的员工养老金详细信息.我想获得每个员工12个月的总养老金,从所有12个表(jan到dec)中累计金额.
我该如何编写查询?
可能重复:
在单独的文件夹中编译python文件的方法?
当python将模块编译为字节码时,它会从.py文件生成.pyc文件.
我的问题是,是否可以将这些.pyc文件写入与模块所在位置不同的目录?
例如,我有一个大型模块目录.我希望将源代码保存在目录中,并且有一个像"bytecode"这样的子目录,其中存储了所有.pyc,而不是让它充满.pyc文件.
这可能吗?