如何按内容类型分隔 POST 个请求?
How can I separate POST requests by content-type?
我想根据客户端提供的内容类型执行不同的操作。我为此配置了 2 个控制器操作:
/**
* @Post("", requirements={"_format": "json"})
*/
public function postJsonAction(Request $request)
{
//
}
/**
* @Post("", requirements={"_format": "csv"})
*/
public function postCsvAction(Request $request)
{
//
}
但是,这对我不起作用,总是执行第一个操作。我在这里做错了什么?
这是我在 config.yml:
中的 fos_rest 配置
fos_rest:
param_fetcher_listener: true
allowed_methods_listener: true
routing_loader:
default_format: json
include_format: false
view:
mime_types: { 'csv': ['text/csv'], 'xlsx': ['application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'] }
formats:
json: true
csv: true
xlsx: true
format_listener:
rules:
- { path: '^/api', priorities: ['json', 'csv', 'xlsx'], fallback_format: ~, exception_fallback_format: json, prefer_extension: false }
service:
view_handler: app.view_handler
您可以在您的路线中配置它。例如,如果您使用的是 yml 路由配置。
csv:
path: /article/format/csv/
defaults: { _controller: AppBundle:Article:postCsv }
json:
path: /article/format/json/
defaults: { _controller: AppBundle:Article:postJson }
然后,使用 JS 更改表单操作。
if ("csv" === $("#format").val()) {
$('#your_form').attr('action', '/article/format/csv/');
}
else {
$('#your_form').attr('action', '/article/format/json/');
}
我想根据客户端提供的内容类型执行不同的操作。我为此配置了 2 个控制器操作:
/**
* @Post("", requirements={"_format": "json"})
*/
public function postJsonAction(Request $request)
{
//
}
/**
* @Post("", requirements={"_format": "csv"})
*/
public function postCsvAction(Request $request)
{
//
}
但是,这对我不起作用,总是执行第一个操作。我在这里做错了什么? 这是我在 config.yml:
中的 fos_rest 配置fos_rest:
param_fetcher_listener: true
allowed_methods_listener: true
routing_loader:
default_format: json
include_format: false
view:
mime_types: { 'csv': ['text/csv'], 'xlsx': ['application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'] }
formats:
json: true
csv: true
xlsx: true
format_listener:
rules:
- { path: '^/api', priorities: ['json', 'csv', 'xlsx'], fallback_format: ~, exception_fallback_format: json, prefer_extension: false }
service:
view_handler: app.view_handler
您可以在您的路线中配置它。例如,如果您使用的是 yml 路由配置。
csv:
path: /article/format/csv/
defaults: { _controller: AppBundle:Article:postCsv }
json:
path: /article/format/json/
defaults: { _controller: AppBundle:Article:postJson }
然后,使用 JS 更改表单操作。
if ("csv" === $("#format").val()) {
$('#your_form').attr('action', '/article/format/csv/');
}
else {
$('#your_form').attr('action', '/article/format/json/');
}