我正在努力建立一个宁静的API,我正在努力如何将JSON数据序列化为HTTP query string.
需要在请求中传递许多强制和可选参数,例如(在下面表示为JSON对象):
{
"-columns" : [
"name",
"column"
],
"-where" : {
"-or" : {
"customer_id" : 1,
"services" : "schedule"
}
},
"-limit" : 5,
"return" : "table"
}
Run Code Online (Sandbox Code Playgroud)
我需要支持不同数量的不同客户端,所以我正在寻找一种标准化的方法将这个json对象转换为查询字符串.有一个,它看起来怎么样?
另一种方法是允许用户只是传递消息体中的json对象,但我读到我应该避免它(带请求体的HTTP GET).
有什么想法吗?
编辑以澄清:
列出一些不同的语言如何编码上面给定的json对象:
jQueryusing $.param:-columns [] = name&-columns [] = column&-where [-or] [customer_id] = 1&-where [-or] [services] = schedule&-limit = 5&return = columnPHPusing http_build_query:-columns [0] = name&-columns [1] = column&-where [-or] [customer_id] …我有一个可以使用表单显示窗口的应用程序.只有在使用-debug标志运行应用程序时才会显示该表单,否则它仅显示在托盘中.
var form = new Form();
if(DebugMode)
form.Show();
Run Code Online (Sandbox Code Playgroud)
当在调试模式下运行时,应用程序将侦听CloseMainWindow(),因为显示了表单.如何让应用程序也不显示CloseMainWindow()?如果不是在调试模式下,我不希望用户能够与表单进行交互.
我尝试了几种方法,比如显示窗口但是将大小设置为0.这显示了一个小形式,即不隐藏.
if (!DebugMode)
{
form.Show();
form.Size = new Size(0, 0);
}
Run Code Online (Sandbox Code Playgroud)
同时显示它,然后隐藏它不起作用:
if (!DebugMode)
{
form.Show();
form.Hide();
}
Run Code Online (Sandbox Code Playgroud)
显示它,但开始最小化并且未在任务栏中显示也不起作用:
if (!DebugMode)
{
form.Show();
form.WindowState = FormWindowState.Minimized;
form.ShowInTaskbar = false;
}
Run Code Online (Sandbox Code Playgroud)
我是否遗漏了一些非常明显的东西,或者是否无法以优雅的方式将流程最小化到托盘?
这是我想组合的两个装饰器,因为它们非常相似,区别在于如何处理未经身份验证的用户。我更喜欢有一个可以通过参数调用的装饰器。
# Authentication decorator for routes
# Will redirect to the login page if not authenticated
def requireAuthentication(fn):
def decorator(**kwargs):
# Is user logged on?
if "user" in request.session:
return fn(**kwargs)
# No, redirect to login page
else:
redirect('/login?url={0}{1}'.format(request.path, ("?" + request.query_string if request.query_string else '')))
return decorator
# Authentication decorator for routes
# Will return an error message (in JSON) if not authenticated
def requireAuthenticationJSON(fn):
def decorator(**kwargs):
# Is user logged on?
if "user" in request.session:
return fn(**kwargs)
# …Run Code Online (Sandbox Code Playgroud) 我正在尝试学习如何使用MongoDB反应性存储库spring-boot 2.0.0.M2,但我担心我没有按预期做事.
这是我的方法之一,试图User通过他们的电子邮件找到.但如果没有,该方法应抛出异常.
@Override
public Mono<User> findByEmail(String email) {
User user = repository.findByEmail(email).block();
if(user == null) {
throw new NotFoundException("No user account was found with email: " + email);
}
return Mono.just(user);
}
Run Code Online (Sandbox Code Playgroud)
存储库扩展ReactiveCrudRepository<User, String>,但我担心通过使用.block()我阻止这种方法被反应.我是反应式编程的新手,我很难找到好的文档.有人可以指点我正确的方向吗?
我的symfony项目中有一条受限制的路由,所以如果我尝试去那里而不登录,我会被重定向到登录页面.
我想区分我何时尝试在没有登录的情况下进入禁区,以及何时直接进入登录页面.
有关如何在symfony中执行此操作的任何线索?
更新 通过区分我的意思是某种方式来检查用户是否通过直接转到该URL登陆登录页面,或者用户是否因为试图访问受限页面而登陆登录页面.