Articles of API

使用Nginx / Passenger部署Grape API

我的服务器上安装了Nginx和Passenger。 试图运行一个葡萄(机架)API。 当我部署Rails应用程序时,我在Nginx conf中有这个服务器块; server { listen 80; server_name yourserver.com; # Tell Nginx and Passenger where your app's 'public' directory is root /path-to-app/public; # Turn on Passenger passenger_enabled on; passenger_ruby /path-to-ruby; } 乘客指南上的说明是; 服务器块的根必须指向您的应用程序的公共子目录。 在我的葡萄API中,这个根是什么?

如何使用Docker api附加到容器后使用stdin,stdout和stderrstream?

我试图附加到一个容器使用API​​给https://docs.docker.com/engine/reference/api/docker_remote_api_v1.22/ 我有一个基于docker-hub nginx图像的容器执行。 我可以发送一个附加到它的请求,保存stderr,stdin和stdout的标志。 我的目标是交互使用它们。 我无法弄清楚如何使用java的stream,发送命令和读取输出的过程。 我正在使用Docker版本1.10.1。 Api v1.22。 正在使用的操作系统是Ubuntu 14.04。 该应用程序使用JDK 1.8。 我将重点放在通过api调用使用attach命令,如http:// localhost:4243 / containers / container_id / attach?stdin = 1&stdout = 1 (4243是Docker侦听命令的地方),stdin和stdout标志用于启用stream。 该文档具有标志细节。 打完电话后,我想和我的容器“互动”。 这可能根据API文件,但我有点不清楚如何做到这一点。 帮助将不胜感激!

如何正确configurationNginx的Node.js REST API?

我有一个运行在Apache和Nginx服务上的节点应用程序作为反向代理。 在同一台服务器上还运行一个Node REST API。 JavaScript代码如下所示: api.js // Express const express = require('express'); const bodyParser = require('body-parser'); const cors = require('cors'); // Express App const app = express(); // Env const PORT = process.env.PORT || 3000; const NODE_ENV = process.env.NODE_ENV || 'development'; // Config app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true })); app.use(cors()); // Routes const users = require('./routes/users'); […]

Laravel 5.3,使用api.example.com到example.com/api

如何将api.example.com路由到example.com/api,以便我可以 api.example.com/v1/users 比使用 example.com/api/v1/users. 我正在使用nginx,谢谢。

Magento 1.7 REST API nginx重写规则。 api.php没有执行

所有如果我打开链接http://example.com/api/rest/products ,它只是下载api.php,而不是脚本执行。 它可能是什么? 有我的nginx网站的magento规则 location /api { rewrite ^/api/rest /api.php?type=rest break; } location / { index index.html index.php; try_files $uri $uri/ @handler; expires 30d; } location ~ (/(app/|includes/|lib/|/pkginfo/|var/|report/config.xml)|/\.svn/|/.hta.+) { deny all; } location ^~ /(app|includes|lib|media/downloadable|pkginfo|report/config.xml|var)/ { internal; } location /var/export/ { internal; } location /. { return 404; } location @handler { rewrite / /index.php; […]

POST请求在使用http而不是https时被转换为GET请求

添加SSL后,我注意到一个奇怪的行为:在地址中使用HTTP协议的所有API POST请求正在变成GET请求,这就是为什么我得到ActionController::RoutingError (No route matches [GET] "/api/v2/users")错误。 我的nginx.conf: upstream unicorn_staging.xxxxx.com { server unix:/srv/www/xxxxx/shared/sockets/unicorn.sock fail_timeout=0; } server { listen 80; server_name staging.xxxxx.com xxxxx dublin; access_log /var/log/nginx/staging.xxxxx.com.access.log; keepalive_timeout 5; root /srv/www/xxxxx/current/public/; location / { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; # If you don't find the filename in the static files # Then request it […]

api网关。 他们是如何编写的,并有指导他们如何与客户互动。

我一直在做很多关于微服务的研究,但是我找不到一个为API网关编写的代码。 我知道,在客户端和服务之间,您将拥有一个允许客户端通过IoT向网关发送1个请求的API网关,然后网关可以在内部向服务提出许多请求,然后build立响应。 现在从一篇关于NGINX的文章 API网关负责请求路由,组合和协议转换。 用例 假设我们支持2个客户端。 Android和一个angular度的应用程序(浏览器),让我们做一个有形的用户故事,客户端是一个在线购物商店。 那么购物商店将有不同的服务分解到服务器中,并且每个服务可以用不同的平台/语言与不同的数据库build立在一起。 它们是完全独立的,因此它们可以迅速在云中进行扩展,而无需扩展整个应用程序。 如果有一些激烈的algorithm需要运行付款。 然后支付服务可以快速启动更多的服务器来平衡负载并减less用户的等待时间。 但是可以用Java编写,这可能会暴露一个HTTP / REST API。 然而,如果它是用c ++ / Golang / Node编写的,那么使用什么语言并不重要,而不是通过HTTP公开它的api,而是通过一个不同的协议,这意味着什么在api网关上 – 它将如何处理响应 ? 客户端去请求我们有3个东西加载的主页 购物车 列表视图的购物项目 目前特价 客户端只会向api网关发出一个请求让我们来说说aprifway / apiv1 / home到api网关,然后会有三个请求到服务器 serviceShopping / apiv1 / shoppingList serviceCart / apiv1 /车 serviceSpecial / apiv1 /特价 在这一点上,3种服务可以用不同的语言编写,并使用不同的协议。 这3个服务如何被请求,以及如何响应客户端(单个响应)如何连接? json对象与特定的架构? 这是我感到困惑的地方… 很抱歉,这是一个很简单的问题,但我需要设置一些我可以概念化的东西,并解释一下。

在Chrome中随机高内容下载时间?

我们有一个随机在Chrome浏览器中content download时间很长的API,它总是在Firefox中运行良好,只需要几ms 。 响应大小为20kb未压缩和4kb压缩。 相同的请求也使用curl正常工作。 我们尝试过的东西: 禁用If-None-Match标题以禁用浏览器的caching响应。 尝试各种按压(gzip,deflate,br)。 禁用压缩。 禁用所有的Chrome扩展。 相同的请求有时在Chrome上运行良好,但随机返回非常高的内容下载时间。 我们无法理解这个问题的根源。 还有什么其他的事情可以尽量减less这个时间? 我在这里提出了三个要求,第三个要求花了最多时间(在最后一个峰之前)。 CPU似乎并没有在一段较长的时间内达到最大。 大部分时间都是空闲时间。 此外,使用Replay XHR菜单重放呼叫时,内容下载周期将从2秒下降到200毫秒。

如何基于代理响应有条件地在nginx中提供静态文件?

我有一个文件夹/static/uploads/limited ,我需要configurationnginx为特定用户提供一些文件。 我也有一个API /api/auth/canIDownloadThis回应一个JSON喜欢 { "result:"true" } 在提供特定文件夹之前,如何让nginx检查我的API proxy_pass的响应? 我需要的伪代码是这样的: location /static/uploads/limited{ IF /api/canIdownloadThis IS TRUE THEN alias /my_secret_folder_path } 因为我不想使用basic_auth。 谢谢。

没有nginx的Puma – 同一个IP:PORT上的多个ruby应用程序

Nginx在生产中的重要性通常是基于其为慢速客户提供服务的能力; 在RESTful API的设置中,似乎是生产堆栈的一个不必要的层,特别是Puma(不同于广泛使用的独angular兽可以处理nginx工作)。 Puma可以允许多个慢速客户端进行连接,而无需在请求事务中阻止工作人员。 因此,Puma优雅地处理慢速客户。 Heroku推荐Puma用于您期望速度慢的客户端。 REF 如何启用Puma在同一端口上提供多个ruby应用程序而不使用nginx作为反向代理?