logo

开发

二进制响应

要从您的 Vapor 应用程序返回二进制响应(例如 PDF 下载),您的 HTTP 响应应包含 X-Vapor-Base64-Encode 标头

php
return $response->withHeaders([
    'X-Vapor-Base64-Encode' => 'True',
]);

Lambda 响应大小

Lambda 将响应限制为 6MB。如果您需要提供更大的文件,请考虑返回一个已签名的临时 S3 URL,您的用户可以使用该 URL 直接从 S3 下载文件。

配置 OpenSSL

要使用某些 OpenSSL 函数(例如 openssl_pkey_new),您必须创建一个 openssl.cnf 配置文件,并指示 Vapor 通过 OPENSSL_CONF 环境变量加载它。例如,此环境变量将指示 Vapor 从您的项目的根目录加载 openssl.cnf 文件

OPENSSL_CONF="/var/task/openssl.cnf"

下面提供了一个示例 openssl.cnf 文件

dir = certificates

[ ca ]
default_ca = CA_default

[ CA_default ]
serial = $dir/serial
database = $dir/index.txt
new_certs_dir = $dir/newcerts
certificate  = $dir/cacert.pem
private_key = $dir/private/cakey.pem
default_days = 36500
default_md  = sha256
preserve = no
email_in_dn  = no
nameopt = default_ca
certopt = default_ca
policy = policy_match

[ policy_match ]
commonName = supplied
countryName = optional
stateOrProvinceName = optional
organizationName = optional
organizationalUnitName = optional
emailAddress = optional

[ req ]
default_bits = 2048
default_keyfile = priv.pem
default_md = sha256
distinguished_name = req_distinguished_name
req_extensions = v3_req
encyrpt_key = no

[ req_distinguished_name ]

[ v3_ca ]
basicConstraints = CA:TRUE
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer:always

[ v3_req ]
basicConstraints = CA:FALSE
subjectKeyIdentifier = hash

"响应后" 作业

在典型的 Laravel 应用程序中,您可以调度将在 HTTP 响应发送到浏览器后执行的作业

php
Route::get('/', function () {
    dispatch(function () {
        Mail::to('[email protected]')->send(new WelcomeMessage);
    })->afterResponse();

    return view('home');
});

但是,我们建议您在使用 Vapor 时始终将作业调度到您的队列工作者。Vapor 无法在将响应发送到浏览器后执行作业;因此,尝试这样做会导致您的应用程序对最终用户来说显得更慢。