小编And*_*eas的帖子

将JSON序列化为查询字符串的标准化方法?

我正在努力建立一个宁静的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 = column
  • PHPusing http_build_query:-columns [0] = name&-columns [1] = column&-where [-or] [customer_id] …

serialization json http-get query-string

50
推荐指数
4
解决办法
7万
查看次数

C#关闭流程以优雅的方式最小化到托盘?

我有一个可以使用表单显示窗口的应用程序.只有在使用-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)

我是否遗漏了一些非常明显的东西,或者是否无法以优雅的方式将流程最小化到托盘?

c#

6
推荐指数
1
解决办法
962
查看次数

将两个 python 装饰器合二为一

这是我想组合的两个装饰器,因为它们非常相似,区别在于如何处理未经身份验证的用户。我更喜欢有一个可以通过参数调用的装饰器。

# 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)

python decorator bottle python-3.x python-decorators

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

Spring WebFlux:在Spring Data MongoDB反应库中发出null值的异常?

我正在尝试学习如何使用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()我阻止这种方法被反应.我是反应式编程的新手,我很难找到好的文档.有人可以指点我正确的方向吗?

java spring reactive-programming spring-data-mongodb

4
推荐指数
1
解决办法
5591
查看次数

检查用户是否在symfony中被重定向?

我的symfony项目中有一条受限制的路由,所以如果我尝试去那里而不登录,我会被重定向到登录页面.

我想区分我何时尝试在没有登录的情况下进入禁区,以及何时直接进入登录页面.

有关如何在symfony中执行此操作的任何线索?

更新 通过区分我的意思是某种方式来检查用户是否通过直接转到该URL登陆登录页面,或者用户是否因为试图访问受限页面而登陆登录页面.

php symfony

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