小编lic*_*rna的帖子

从Rails应用程序中使用REST API

我正在构建我的第一个Rails应用程序,我希望它能够使用REST API中的所有内容.我想要做的是让Rails服务我的Web应用程序作为我的API的前端.据我所知(我现在正在盯着Rails),Rails在ORM和直接访问数据库系统方面具有很大的潜力.另一方面,我的平台的设计方式是通过定义的接口(在本例中为REST API)访问每个层,因此不会从任何客户端读取数据库,而是通过其接口读取数据库.

例如,我的API公开以下资源:

https://api.example.com/v1/users/feature-xxx [GET]
Run Code Online (Sandbox Code Playgroud)

我希望我的网络应用程序有一个像这样的页面:

https://example.com/feature
Run Code Online (Sandbox Code Playgroud)

因此,用户将访问此URL,登录后,Rails应用程序将请求数据从我的API生成此动态内容.

问题是:

  • 我的Rails应用程序从HTTP/Rest后端使用其数据的必要步骤是什么?和,
  • 这对于Rails应用程序来说是一个很好的设计吗?

谢谢!

api rest web-applications ruby-on-rails

26
推荐指数
3
解决办法
3万
查看次数

添加一个2值元组到dict作为键:值

我有一个元组,就像('key1', 'value1')我要将它添加到字典中所以它就像是{'key1': 'value1'}但没有做类似的事情dictionary[t[0]] = t[1].

上下文如下,我有一个重复规则,如下所示:

FREQ=WEEKLY;UNTIL=20120620T233000Z;INTERVAL=2;BYDAY=WE,TH
Run Code Online (Sandbox Code Playgroud)

我希望有一个像这样的字典:

recurrence = {
    'freq' : 'weekly',
    'until' : '20120620T233000Z',
    'interval' : '2',
    'byday' : 'we,th'
}
Run Code Online (Sandbox Code Playgroud)

而我正在做这样的事情:

for rule in recurrence.split(';'):
    r = rule.split('=')
    rules[r[0]] = r[1]
Run Code Online (Sandbox Code Playgroud)

而且我根本不喜欢它.有更多的pythonic方式吗?

python

8
推荐指数
1
解决办法
1万
查看次数

如何通知用户他的浏览器不受支持

我在一家小公司工作,我们正在开发一个Web应用程序.由于我们拥有的资源非常少,我们无法组建我们想要的开发团队(我们只有两个人).随着时间的推移,Web应用程序变得非常复杂,很难继续使用IEx,Firefox,Safari等.我们尝试在编码时保持干净,因此我们为所有非IEx现代浏览器提供了几乎功能性的Web应用程序,但IE是另一个故事.

我们如何通知用户IE根本不受支持,他们应该安装一个现代浏览器继续?

请记住,问题不在于我们是否应该支持IE.因为我们不会.问题是如何通知用户更改浏览器.

目前,我们在页面顶部有一个小白框,显示一些文字,并有一些指向Firefox和Chrome的链接.您对如何实现这一点有任何想法吗?以前解决过这个问题且有经验的人?

browser firefox internet-explorer google-chrome cross-browser

7
推荐指数
2
解决办法
9681
查看次数

以编程方式获取 Pod DNS 名称

我有一个有 3 名成员的状态集。可以通过以下方式从集群内部访问它们:

podname-{0..n}.service.default.svc.cluster.local
Run Code Online (Sandbox Code Playgroud)

我正在使用控制器中的 Kubernetes API。我刚刚创建了 Statefulset:

podname-{0..n}.service.default.svc.cluster.local
Run Code Online (Sandbox Code Playgroud)

假设一切正常,几分钟后我就有了 3 个正在运行的 Pod。如何获取新创建的 Pod 的 Pod DNS 条目?

我知道我可以使用以下方法构建 DNS:

fmt.Sprintf("%s-%d.%s.%s.svc.cluster.local", s.Name, idx, service, S.Namespace)
Run Code Online (Sandbox Code Playgroud)

但我发现一些问题:

  1. 我必须根据副本数量计算索引
  2. 我需要知道用于此目的的服务名称StatefulSet
  3. 我假设集群域是cluster.local这不一定是真的

我认为它应该存在(但我不确定它是否真的存在),是一个 API,给定 StatefulSet 将允许我知道所创建的副本的 DNS 名称。有这样的API吗?

kubernetes kubernetes-go-client

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

使用 Python 客户端在 Kuberentes 中批准 CSR

我在 Kubernetes 中有以下 CSR 对象:

$ kubectl get csr
NAME                                     AGE       REQUESTOR                                      CONDITION
test-certificate-0.my-namespace          53m       system:serviceaccount:my-namespace:some-user   Pending
Run Code Online (Sandbox Code Playgroud)

我想使用 Python API 客户端批准它:

$ kubectl get csr
NAME                                     AGE       REQUESTOR                                      CONDITION
test-certificate-0.my-namespace          53m       system:serviceaccount:my-namespace:some-user   Pending
Run Code Online (Sandbox Code Playgroud)

现在,csr对象的内容是:

{'api_version': 'certificates.k8s.io/v1beta1',
 'kind': 'CertificateSigningRequest',
 'metadata': {'annotations': None,
              'cluster_name': None,
              'creation_timestamp': datetime.datetime(2019, 3, 15, 14, 36, 28, tzinfo=tzutc()),
              'deletion_grace_period_seconds': None,
              'name': 'test-certificate-0.my-namespace',
              'namespace': None,
              'owner_references': None,
              'resource_version': '4269575',
              'self_link': '/apis/certificates.k8s.io/v1beta1/certificatesigningrequests/test-certificate-0.my-namespace',
              'uid': 'b818fa4e-472f-11e9-a394-124b379b4e12'},
 'spec': {'extra': None,
          'groups': ['system:serviceaccounts',
                     'system:serviceaccounts:cloudp-38483-test01',
                     'system:authenticated'],
          'request': 'redacted',
          'uid': 'd5bfde1b-4036-11e9-a394-124b379b4e12',
          'usages': ['digital …
Run Code Online (Sandbox Code Playgroud)

python kubernetes kubernetes-python-client

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

如何同时使用Android 1.x和2.x的联系人API?

Mi问题是我需要在我的应用程序中为android 1.5,1.6和2.x实现联系人列表.

我使用旧的Contacts API,而不是ContactsContract,因为向后兼容1.x系列.但是当在2.x上显示我的应用程序时,联系人列表不完整.在某些设备中,它显示为空,在某些设备中,它仅显示设备中的某些联系人.

我知道在2.x系列上使用Contacts API它只显示主要帐户联系人,但事实并非如此.看起来只是最近才显示更新的联系人,但情况并非如此.

所以问题是:如何正确实现2.x和1.x android版本的联系人列表?

提前致谢

android

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

设置数据内容并显示弹出窗口

我正在尝试使用jquery的ajax从资源获取数据,然后我尝试使用此数据来填充引导弹出窗口,如下所示:

$('.myclass').popover({"trigger": "manual", "html":"true"});
$('.myclass').click(get_data_for_popover_and_display);
Run Code Online (Sandbox Code Playgroud)

并且检索数据的功能是:

get_data_for_popover_and_display = function() {
    var _data = $(this).attr('alt');
    $.ajax({
         type: 'GET',
         url: '/myresource',
         data: _data,
         dataType: 'html',
         success: function(data) {
             $(this).attr('data-content', data);
             $(this).popover('show');
         }
    });
}
Run Code Online (Sandbox Code Playgroud)

发生的事情是当我点击时弹出窗口没有显示,但是如果我稍后悬停元素它将显示弹出窗口,但没有内容(data-content属性).如果我alert()success回调内部放置它将显示返回的数据.

知道为什么会这样吗?谢谢!

javascript jquery twitter-bootstrap

3
推荐指数
2
解决办法
2万
查看次数

从Javascript中的对象列表中提取对象属性

我从API接收到以下对象:

{
   '2012-12-12': [
       { 'id': 1234,
         'type': 'A' },
       { 'id': 1235,
         'type': 'A' },
       { 'id': 1236,
         'type': 'B' },
    ],
   '2012-12-13': [
       { 'id': 1237,
         'type': 'A' },
       { 'id': 1238,
         'type': 'C' },
       { 'id': 1239,
         'type': 'B' },
    ]
}
Run Code Online (Sandbox Code Playgroud)

然后我想要另一个名为typestype的变量Array,它将保存每个type对象的属性的每个可能值.在这种情况下,它将是:

types = ['A', 'B', 'C']
Run Code Online (Sandbox Code Playgroud)

我试图以功能方式完成它(我使用的是underscore.js),但我无法找到一种方法.现在我正在使用

types = [];
_.each(response, function(arr1, key1) {
    _.each(arr1, function(arr2, key2) {
        types.push(arr2.type);
    });
});
types = _.uniq(types);
Run Code Online (Sandbox Code Playgroud)

但那非常难看.你能帮我找出更好的编写代码的方法吗?

谢谢!

javascript functional-programming underscore.js

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

Python-social-auth 使用 Django 服务器主机名和侦听端口作为 redirect_uri

我正在使用 python-social-auth 和 Django 使用 Oauth2 (google-oauth2) 向 Google 进行身份验证。在我的模板中,我使用了类似的东西:

<a href="{% url "begin:social" "google-oauth2" %}">Login</a>
Run Code Online (Sandbox Code Playgroud)

它正确地创建了一个A指向正确登录 url的元素。问题是,djangorunserver在 Apache 后面使用ProxyPass和选项运行ProxyPassReverse(还尝试了带proxy_pass选项的nginx ,而不是 fcgi)。

在这种情况下,我有两个问题;首先,在创建身份验证请求时,python-social-auth 发送参数,redirect_uri就像localhost:8000我在 settings.py 上所做的那样:

AUTH_EXTRA_ARGUMENTS = {'redirect_uri': 'http://myapp.com'}
Run Code Online (Sandbox Code Playgroud)

如果我localhost:8000作为redirect_uri发送,它会绕过返回的“错误请求”谷歌响应。

然后,在 python-social-auth oauth.py在这里,我可以看到

self.auth_complete_params(self.validate_state())
Run Code Online (Sandbox Code Playgroud)

redirect_uri向谷歌发送同样的错误。所以我做了一些丑陋的事情:

data = self.auth_complete_params(self.validate_state())
data['redirect_uri'] = 'http://myapp.com'
response = self.request_access_token(
    self.ACCESS_TOKEN_URL,
    data=data, # ugh!
    headers=self.auth_headers(),
    method=self.ACCESS_TOKEN_METHOD
) 
Run Code Online (Sandbox Code Playgroud)

所以,这就是我目前的解决方案。我只是不明白如何以更优雅的方式或“正确”的方式做到这一点。

有什么帮助吗?

最好的事物

python authentication django oauth

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

使用ant(build.xml)编译jni目录

我使用Ant来构建我的Android应用程序(ant compile,ant install等等),我加入了一些NDK源(内部jni/目录),我想有一个规则来重新编译jni/与蚂蚁目录,然后安装我的应用程序到我的设备/模拟器,像这样:

$ ant jni-and-install
Run Code Online (Sandbox Code Playgroud)

代替:

$ make -f jni/Makefile APP=myapp    
(jni compilation & installation)
...
$ ant install
Run Code Online (Sandbox Code Playgroud)

我试图找到把我的规则放在build.xml中的地方,但我不知道在哪里.

我应该怎么编辑蚂蚁叫makejni/安装到设备前目录?

ant build-automation android

2
推荐指数
1
解决办法
3145
查看次数

如何以正确的Scala函数方式编写以下代码段?

我是Scala的新手,想知道这是否是正确的写作方式:

def createCol(prior: List[Int], current: List[Int]): List[Int] = {
  if (prior.isEmpty) List(1) ++ current
  else if (prior.tail.isEmpty)   // begin of the block to improve
    createCol(prior.tail, current ++ List(prior.head))
  else
    createCol(prior.tail, current ++ List(prior.head + prior.tail.head))
}
Run Code Online (Sandbox Code Playgroud)

我感兴趣的部分是这样的:

if (prior.tail.isEmpty)
  createCol(prior.tail, current ++ List(prior.head))
else
  createCol(prior.tail, current ++ List(prior.head + prior.tail.head))
Run Code Online (Sandbox Code Playgroud)

因为我正在重复几乎相同的函数调用,createCol所以我尝试了这个:

val ssum = if (prior.tail.isEmpty) prior.head else prior.head + prior.tail.head
createCol(prior.tail, current ++ List(ssum))
Run Code Online (Sandbox Code Playgroud)

这样做的最佳或推荐方法是什么?

谢谢

functional-programming scala

0
推荐指数
1
解决办法
175
查看次数

在请求我的Flask Python应用程序之后使用threading.Timer

我想知道threading.Timer在30分钟后收到执行任务的请求后使用是否有意义.我们来看看代码:

def late_process():
    if not finish:
        Timer(1800, late_process, ()).start()
        # Work to do ...
        # Write logs, send emails... whatever

@app.route('/timely-req')
def timely():
    finish = False
    Timer(1800, late_process, ()).start()
    return 'To be executed in 30 minutes'

@app.route('/end-timely-req')
def end():
    finish = True
    return 'Process stopped'
Run Code Online (Sandbox Code Playgroud)

因此,主要思想是触发此过程的执行(每30分钟).这是有效的,但我不知道是否threading.Timer是一个好主意,因为请求将返回,但我将离开服务器,每隔30分钟唤醒驻留线程.这只是一个或原型使用和尝试,它不是一个将在某一天看到生产的最终解决方案.

我使用的是Python 2.6,Flask 0.10.1和Uwsgi.

python flask

0
推荐指数
1
解决办法
1908
查看次数